IBM Support

PQ55451: CALL TO GETSOCKOPT() FOR SO_ERROR RETURNS WITH ERRNO=0 WHEN SOCKET IS NON-BLOCKING AND CONNECT FAILS

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Call to getsockopt() for SO_ERROR returns with errno=0 when
    connect() fails on a non-blocking socket.
    A non-blocking connect() is issued and returns with EINPROGRESS
    because the call did not complete. A select() is issued to
    monitor the socket for the competion of the connect().  The
    connect() request times out, causing the select() to complete.
    The application issues getsockopt() for SO_ERROR to get the
    status of the connect(), and errno=0 is returned instead of
    ETIMEDOUT.
    KEYWORDS:
    GETSOCKOPT GETSOCKOPT() BPX1OPT SO_ERROR SOCKET ERROR ERRNO
    ETIMEDOUT 1127 x'467' 60 x'3C'
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All users of the IBM Communications Server   *
    *                 for OS/390 Release 10 IP and                 *
    *                 z/OS Version 1 Release 2 IP                  *
    ****************************************************************
    * PROBLEM DESCRIPTION: GETSOCKOPT for SO_ERROR returns an      *
    *                      incorrect ERRNO after a CONNECT times   *
    *                      out                                     *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    An application program issues a non-blocking CONNECT.  As
    expected, the CONNECT returns RETCODE -1 and ERRNO EINPROGRESS
    (36) which indicates that the CONNECT is in progress.  The
    application program then issues a SELECT in order to wait until
    the CONNECT is no longer in progress.  Because the remote system
    is not receiving, the CONNECT times out.  EZBTCPTM sets an error
    value of ETIMEDOUT (60) but does not propagate it to the SCB
    that represents the connecting socket.  The SELECT completes and
    the application program issues a GETSOCKOPT for SO_ERROR in
    order to determine whether or not the CONNECT succeeded.  Since
    the SCB does not contain the correct ERRNO, the GETSOCKOPT
    returns an ERRNO of 0 which causes the application program to
    erroneously determine that the CONNECT succeeded.
    +-------------------------------------------------------------+
    + Please check our Communications Server for OS/390 homepages +
    + for common networking tips and fixes.  The URL for these    +
    + homepages can be found in Informational APAR II11334.       +
    +-------------------------------------------------------------+
    

Problem conclusion

  • EZBTCPTM has been amended to propagate an ETIMEDOUT error to the
    SCB.
    
    * Cross Reference between External and Internal Names
    

Temporary fix

Comments

APAR Information

  • APAR number

    PQ55451

  • Reported component name

    TCP/IP V3 MVS

  • Reported component ID

    5655HAL00

  • Reported release

    50A

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2001-12-04

  • Closed date

    2001-12-18

  • Last modified date

    2002-02-01

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UQ61332 UQ61333

Modules/Macros

  • EZBTCPTM
    

Fix information

  • Fixed component name

    TCP/IP V3 MVS

  • Fixed component ID

    5655HAL00

Applicable component levels

  • R120 PSY UQ61332

       UP02/01/15 P F201

  • R50A PSY UQ61333

       UP02/01/15 P F201

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"50A","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSCY4DZ","label":"DO NOT USE"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"50A","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
01 February 2002