HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1648 Details

Help Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges

This page provides all information on Problem Report 1648.


Report 1648 Actions


    Problem Report Number 1648
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Permanent Interpretation (PIN)
    Problem Resolution ID PIN.X.0205
    Raised 2002-10-01 08:00
    Updated 2003-03-13 08:00
    Published 2002-10-08 08:00
    Product Standard Sockets V2 (UNIX 98)
    Certification Program The Open Brand certification program
    Test Suite VSU version 5.1.2
    Test Identification CAPI.os/sockets/connect 3,4,5,6,7,8
    Specification Networking Services Issue 5
    Location in Spec See Problem Text
    Problem Summary PIN4U.00071 This IR claims that historical listen() behavior should be allowed in UNIX98
    Problem Text
    Tests 3, 4, 5, 6, 7, and 8 make a listen() call with the second parameter
    'backlog' value explicitly set to be 2:

    tet_infoline("PREP: Child: listen on socket with backlog of 2");
    s2 = listen(sc, 2);

    These tests were designed to have queue depth of incoming connection queue
    to be 2. However, according to IRIX listen(2) man page:

    The system actually enforces the limit of pending connections as
    ((3 * backlog) / 2) + 1
    For example, a backlog of 32 will allow 49 outstanding connections.

    So, a value of 2 would yield the queue depth of 4. The failure of the above
    6 tests were caused by this. By changing the backlog value to be 1, which
    would yield a queue depth of 2, all six tests would pass.

    Two other tests, test 14 and test 17 also make calls to listen() with backlog
    value of 2. Since these two tests were to test something else, the value
    does not matter. Changing the value to 1 did not affect the outcome of these
    tests.

    So, we request Open Group to make this parameter a configurable
    variable so that we can assign a value that meets the purpose the
    above tests were designed to perform, with either a Temporary
    Interpretation or TSD to cover this situation until that is done.


    Test Output
    400|397 3 1 16:42:50|IC Start
    200|397 3 16:42:50|TP Start
    520|397 3 00050372 1 1|PREP: Get VSU_CONNECT_TIMEOUT configuration
    variable
    520|397 3 00050372 1 2|TEST: AF_INET SOCK_STREAM
    520|397 3 00050372 1 3|PREP: Create test sockaddr_in: address =
    130.62.32.200, port = 2257
    520|397 3 00050396 1 1|PREP: Child: create socket
    520|397 3 00050396 1 2|PREP: Child: bind to socket
    520|397 3 00050396 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 3 00050396 1 4|PREP: Child: tell parent ready
    520|397 3 00050396 1 5|PREP: Child: wait for parent to become ready
    520|397 3 00050396 1 6|PREP: Child: delay
    520|397 3 00050372 2 1|PREP: Create three sockets
    520|397 3 00050372 2 2|PREP: Wait for child to be ready
    520|397 3 00050372 2 3|PREP: Connect twice to fill queue
    520|397 3 00050372 2 4|PREP: Notify child to delay and then accept
    520|397 3 00050372 2 5|TEST: connect blocks until connection accepted
    520|397 3 00050372 2 6|TEST: Duration of blocking
    520|397 3 00050372 2 7|ERROR: Process did not appear to block, expected:
    2 secs (approx), actual: 0 secs
    220|397 3 1 16:42:50|FAIL
    410|397 3 1 16:42:50|IC End
    400|397 4 1 16:42:50|IC Start
    200|397 4 16:42:50|TP Start
    520|397 4 00050404 1 1|PREP: Get VSU_CONNECT_TIMEOUT configuration
    variable
    520|397 4 00050404 1 2|TEST: AF_INET SOCK_STREAM
    520|397 4 00050404 1 3|PREP: Create test sockaddr_in: address =
    130.62.32.200, port = 1501
    520|397 4 00050403 1 1|PREP: Child: create socket
    520|397 4 00050403 1 2|PREP: Child: bind to socket
    520|397 4 00050403 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 4 00050403 1 4|PREP: Child: tell parent ready
    520|397 4 00050403 1 5|PREP: Child: wait for parent to complete
    520|397 4 00050404 2 1|PREP: Create three sockets
    520|397 4 00050404 2 2|PREP: Wait for child to be ready
    520|397 4 00050404 2 3|PREP: Connect twice to fill queue
    520|397 4 00050404 2 4|PREP: Set long alarm
    520|397 4 00050404 2 5|TEST: connect blocks until timeout elapses
    520|397 4 00050404 2 6|TEST: Return value
    520|397 4 00050404 2 7|ERROR: Call to connect unexpectedly succeeded
    220|397 4 1 16:42:50|FAIL
    410|397 4 1 16:42:50|IC End
    400|397 5 1 16:42:50|IC Start
    200|397 5 16:42:50|TP Start
    520|397 5 00050419 1 1|PREP: Get VSU_CONNECT_TIMEOUT configuration
    variable
    520|397 5 00050419 1 2|TEST: AF_INET SOCK_STREAM
    520|397 5 00050419 1 3|PREP: Create test sockaddr_in: address =
    130.62.32.200, port = 3001
    520|397 5 00050419 2 1|PREP: Create three sockets
    520|397 5 00050419 2 2|PREP: Wait for child to be ready
    520|397 5 00050419 2 3|PREP: Connect twice to fill queue
    520|397 5 00050419 2 4|TEST: connect blocks until interrupted
    520|397 5 00050419 2 5|ERROR: Call to connect unexpectedly succeeded
    520|397 5 00050392 1 1|PREP: Child: create socket
    520|397 5 00050392 1 2|PREP: Child: bind to socket
    520|397 5 00050392 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 5 00050392 1 4|PREP: Child: tell parent ready
    520|397 5 00050392 1 5|PREP: Child: wait for parent to become ready
    220|397 5 1 16:42:50|FAIL
    410|397 5 1 16:42:50|IC End
    400|397 6 1 16:42:50|IC Start
    200|397 6 16:42:50|TP Start
    520|397 6 00050428 1 1|PREP: Get VSU_CONNECT_TIMEOUT configuration
    variable
    520|397 6 00050428 1 2|TEST: AF_INET SOCK_STREAM
    520|397 6 00050428 1 3|PREP: Create test sockaddr_in: address =
    130.62.32.200, port = 3901
    520|397 6 00050427 1 1|PREP: Child: create socket
    520|397 6 00050427 1 2|PREP: Child: bind to socket
    520|397 6 00050427 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 6 00050427 1 4|PREP: Child: tell parent ready
    520|397 6 00050427 1 5|PREP: Child: wait for parent to become ready
    520|397 6 00050427 1 6|PREP: Child: accept queued connections
    520|397 6 00050427 1 7|PREP: Child: accept connection being
    asynchronously established
    520|397 6 00050427 1 8|PREP: Child: notify parent connections completed
    520|397 6 00050427 1 9|PREP: Child: wait for parent to complete test
    520|397 6 00050428 2 1|PREP: Create three sockets
    520|397 6 00050428 2 2|PREP: Wait for child to be ready
    520|397 6 00050428 2 3|PREP: Connect twice to fill queue
    520|397 6 00050428 2 4|PREP: Set O_NONBLOCK
    520|397 6 00050428 2 5|TEST: connect returns with EINPROGRESS
    520|397 6 00050428 2 6|TEST: Did not block
    520|397 6 00050428 2 7|PREP: Notify child to accept
    520|397 6 00050428 2 8|TEST: Await notification connections completed
    520|397 6 00050428 2 9|TEST: AF_UNIX SOCK_STREAM
    520|397 6 00050428 2 10|PREP: Create test sockaddr_un: path =
    ../tmp/unix.a00CJw
    520|397 6 00050408 1 1|PREP: Child: create socket
    520|397 6 00050408 1 2|PREP: Child: bind to socket
    520|397 6 00050408 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 6 00050408 1 4|PREP: Child: tell parent ready
    520|397 6 00050408 1 5|PREP: Child: wait for parent to become ready
    520|397 6 00050428 3 1|PREP: Create three sockets
    520|397 6 00050428 3 2|PREP: Wait for child to be ready
    520|397 6 00050428 3 3|PREP: Connect twice to fill queue
    520|397 6 00050428 3 4|PREP: Set O_NONBLOCK
    520|397 6 00050428 3 5|TEST: connect returns with EINPROGRESS
    520|397 6 00050428 3 6|ERROR: Call to connect unexpectedly succeeded
    220|397 6 1 16:42:50|FAIL
    410|397 6 1 16:42:50|IC End
    400|397 7 1 16:42:50|IC Start
    200|397 7 16:42:50|TP Start
    520|397 7 00050436 1 1|PREP: Get VSU_CONNECT_TIMEOUT configuration
    variable
    520|397 7 00050436 1 2|TEST: AF_INET SOCK_STREAM
    520|397 7 00050436 1 3|PREP: Create test sockaddr_in: address =
    130.62.32.200, port = 4701
    520|397 7 00050443 1 1|PREP: Child: create socket
    520|397 7 00050443 1 2|PREP: Child: bind to socket
    520|397 7 00050443 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 7 00050443 1 4|PREP: Child: tell parent ready
    520|397 7 00050443 1 5|PREP: Child: wait for parent to complete test
    520|397 7 00050436 2 1|PREP: Create three sockets
    520|397 7 00050436 2 2|PREP: Wait for child to be ready
    520|397 7 00050436 2 3|PREP: Connect twice to fill queue
    520|397 7 00050436 2 4|PREP: Set O_NONBLOCK
    520|397 7 00050436 2 5|TEST: connect returns with EINPROGRESS
    520|397 7 00050436 2 6|TEST: Did not block
    520|397 7 00050436 2 7|TEST: connect returns with EALREADY
    520|397 7 00050436 2 8|ERROR: Call to connect failed unexpectedly,
    expected errno = EALREADY, errno = 133(EISCONN - Socket is connected)
    220|397 7 1 16:42:50|FAIL
    410|397 7 1 16:42:50|IC End
    400|397 8 1 16:42:50|IC Start
    200|397 8 16:42:50|TP Start
    520|397 8 00050435 1 1|PREP: Get VSU_CONNECT_TIMEOUT configuration
    variable
    520|397 8 00050435 1 2|TEST: AF_INET SOCK_STREAM
    520|397 8 00050435 1 3|PREP: Create test sockaddr_in: address =
    130.62.32.200, port = 4601
    520|397 8 00050446 1 1|PREP: Child: create socket
    520|397 8 00050446 1 2|PREP: Child: bind to socket
    520|397 8 00050446 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 8 00050446 1 4|PREP: Child: tell parent ready
    520|397 8 00050446 1 5|PREP: Child: wait for parent to become ready
    520|397 8 00050446 1 6|PREP: Child: accept queued connections
    520|397 8 00050446 1 7|PREP: Child: accept connection being
    asynchronously established
    520|397 8 00050446 1 8|PREP: Child: notify parent connections completed
    520|397 8 00050446 1 9|PREP: Child: wait for parent to complete test
    520|397 8 00050435 2 1|PREP: Create three sockets
    520|397 8 00050435 2 2|PREP: Wait for child to be ready
    520|397 8 00050435 2 3|PREP: Connect twice to fill queue
    520|397 8 00050435 2 4|PREP: Set O_NONBLOCK
    520|397 8 00050435 2 5|TEST: connect returns with EINPROGRESS
    520|397 8 00050435 2 6|PREP: Notify child to accept
    520|397 8 00050435 2 7|TEST: Await notification connections completed
    520|397 8 00050435 2 8|TEST: Select reports socket ready to write
    520|397 8 00050435 2 9|TEST: Poll reports socket ready to write
    520|397 8 00050435 2 10|TEST: AF_UNIX SOCK_STREAM
    520|397 8 00050435 2 11|PREP: Create test sockaddr_un: path =
    ../tmp/unix.a00CK3
    520|397 8 00050433 1 1|PREP: Child: create socket
    520|397 8 00050433 1 2|PREP: Child: bind to socket
    520|397 8 00050433 1 3|PREP: Child: listen on socket with backlog of 2
    520|397 8 00050433 1 4|PREP: Child: tell parent ready
    520|397 8 00050433 1 5|PREP: Child: wait for parent to become ready
    520|397 8 00050435 3 1|PREP: Create three sockets
    520|397 8 00050435 3 2|PREP: Wait for child to be ready
    520|397 8 00050435 3 3|PREP: Connect twice to fill queue
    520|397 8 00050435 3 4|PREP: Set O_NONBLOCK
    520|397 8 00050435 3 5|TEST: connect returns with EINPROGRESS
    520|397 8 00050435 3 6|ERROR: Call to connect unexpectedly succeeded
    220|397 8 1 16:42:50|FAIL
    410|397 8 1 16:42:50|IC End


    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    This request concerns the same issue as PIN4U.00046.

    Although the wording of the specification changed slightly between
    XNS4 and XNS5, the same grey area still exists in XNS5, and so a new
    PIN should be issued that can be referenced in UNIX98 registrations.

    It is recommended that a permanent interpretation is granted.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Permanent Interpretation (PIN)
    Review Conclusion
    A Permanent Interpretation is granted.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority