Report 1255 Actions
Problem Report Number |
1255 |
Submitter's Classification |
Specification problem |
State |
Resolved |
Resolution |
Rejected (REJ) |
Problem Resolution ID |
REJ.X.0457 |
Raised |
1970-01-01 08:00 |
Updated |
2003-03-13 08:00 |
Published |
null |
Product Standard |
Sockets (UNIX 95) |
Certification Program |
The Open Brand certification program |
Test Suite |
VSU version 4.0.2 |
Test Identification |
Sockets/listen 3 |
Problem Summary |
PG4U.00008 Specification should treat a backlog of less than or equal to 0 to mean a backlog of 1. |
Problem Text |
It has been a common practice especially for those BSD based implementation to allow the socket to receive connection requests even when an application has set backlog to 0. Changing such behavior can cause unnecessary hardship for applications to migrate to the X/Open specification. If we literally treats a backlog of 0 to mean disabling the socket from receiving an incoming connection request, then there is a potential for an application to hang indefinitely if it later on calls accept() without setting the NONBLOCK option. It is the author's opinion the specification should treat a backlog of less than or equal to 0 to mean a backlog of 1.
|
Test Output |
If the implementation supports a communications domain and a connection-oriented socket type: A call to int listen(int socket, int backlog) when backlog is negative shall set the length of the socket's listen queue to 0. JOURNAL FILE OUTPUT: -------------------- PREP: Get VSU_CONNECT_TIMEOUT configuration variable TEST: AF_INET SOCK_STREAM PREP: Create test sockaddr_in: address = 15.10.41.16, port = 2065 PREP: Create a socket PREP: Wait for child to be ready TEST: connect is rejected TEST: Return value ERROR: connect call succeeded unexpectedly, returned 0 PREP: Child: create socket PREP: Child: bind to socket PREP: Child: listen on socket with backlog of -1 PREP: Child: tell parent ready PREP: Child: wait for parent to complete test FAIL
|
Review Information
Review Type |
TSMA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Recommendation |
No Resolution Given |
Review Response |
The listen() spec states The listen() function marks a connection-oriented socket, specified by the socket argument, as accepting connections, and limits the number of outstanding connections in the socket's listen queue to the value specified by the backlog argument. This clearly states that backlog will be exactly equal to the number of pending connection requests allowed on a socket at any one time. Contrary to the opinion above, Our understanding is that a backlog of 0 would still allow a connection to take place so long as an accept() was waiting when a connection request arrived. In this case no queue is necessary. Our experience is that historical BSD behavior limits the number of connection requests to (3 * backlog / 2) + 1. We believe this is really the behavior being requested here. This is far from the behavior currently specified. We recommend this request be refused.
|
Review Type |
Expert Group Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
No Resolution Given |
Review Conclusion |
The result of the review by XoTGbase was that they were in agreement with the consultant.
|
Review Type |
SA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
Rejected (REJ) |
Review Conclusion |
This request is refused.
|
Problem Reporting System Options:
|