|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1648 Details
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 EndReview 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:
- View Report 1648
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority