|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1379 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 1379.
Report 1379 Actions
Problem Report Number 1379 Submitter's Classification Specification problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0661 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1996-09-18 08:00 Product Standard Sockets (UNIX 95) Certification Program The Open Brand certification program Test Suite VSU version 4.1.0 Test Identification Sockets/listen 4 Problem Summary TSD4U.00156 This test may fail on implementations with varying listen backlog limits for different address families and or protocols. Problem Text
Our implementation has different limits on the listen backlog for different
address families (and potentially for different protocols in the same address
family). The test relies on a single configuration variable VSU_LISTEN_LIMIT,
making it impossible to configure VSU for our implementation.
X/Open CAE specification, Networking Services, Issue 4 makes the following
requirement for listen():
"Implementations may limit the length of the socket's listen
queue."
The specification does not state that the same limit apply to all address
families and protocols. For implementations that are based on STREAMS and
on the STREAMS Transport Provider Interface (TPI) it might be common that
each transport provider (hence each address family and protocol pair) have
a different listen backlog limit since the TPI is designed to allow each
transport provider control of both the listen queue and the listen backlog
(and its limit). Even if the Streams TPI is not the basis of implementation,
any independent implementation can also allow the same property for the
"backlog" as the specification does not disallow it. Thus the backlog limit
need not be a generic interface specified limit.
The reason for the failure in this test is that in our implementation, the
connect() on AF_UNIX socket sleeps until the peer has called accept(). In
this test case, this particular connect() is a blocking connect and the peer
never accepts this connection. The connect() therefore fails with errno set
to EINTR when the test is interrupted. Modifying the test source such that
there are different listen limits for different address families results in
the test passing.
We suggest that VSU test suite provide separate VSU_LISTEN_LIMIT
configuration variables for each protocol and each address family in order
to address this problem.Test Output
TEST CASE: listen
TEST PURPOSE #4
If the implementation supports a communications domain
and a connection-oriented socket type and limits the
maximum backlog queue length:
A call to int listen(int socket, int backlog) when
backlog is larger than the implementation's maximum
queue length shall set the length to the maximum
supported value.
PREP: Get VSU_LISTEN_LIMIT configuration variable
INFO: VSU_LISTEN_LIMIT = 5
PREP: Get VSU_CONNECT_TIMEOUT configuration variable
PREP: Determine OPEN_MAX
TEST: AF_INET SOCK_STREAM
PREP: Create test sockaddr_in: address = 129.146.85.57, port = 4793
PREP: Child: create socket
PREP: Child: bind to socket
PREP: Child: listen on socket with backlog of LISTEN_LIMIT+10
PREP: Child: tell parent ready
PREP: Child: wait for parent to complete test
CLEANUP: Child: close socket
PREP: Create LISTEN_LIMIT+1 sockets
PREP: Wait for child to be ready
PREP: Connect LISTEN_LIMIT times to fill queue
TEST: Next connect is rejected
TEST: Return value
TEST: errno value
CLEANUP: Kill child
TEST: AF_UNIX SOCK_STREAM
PREP: Create test sockaddr_un: path = ../tmp/unix.zxlwp_
PREP: Child: create socket
PREP: Child: bind to socket
PREP: Child: listen on socket with backlog of LISTEN_LIMIT+10
PREP: Child: tell parent ready
PREP: Child: wait for parent to complete test
PREP: Create LISTEN_LIMIT+1 sockets
PREP: Wait for child to be ready
PREP: Connect LISTEN_LIMIT times to fill queue
TEST: Next connect is rejected
TEST: Return value
TEST: errno value
ERROR: connect call failed incorrectly, errno was 4(EINTR - Interrupted system call)
should have been ETIMEDOUT or ECONNREFUSED
4 FAILReview Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
We agree this is a test suite deficiency in the test
suite version(s) listed.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Test Suite Deficiency (TSD) Review Conclusion
This is an agreed Test Suite Deficiency.
Problem Reporting System Options:
- View Report 1379
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority