|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1095 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 1095.
Report 1095 Actions
Problem Report Number 1095 Submitter's Classification Minor System Fault State Resolved Resolution Minor System Fault (MSF) Problem Resolution ID MSF.X.0044 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1996-11-01 08:00 Expiry Date 1997-11-01 Product Standard Sockets (UNIX 95) Certification Program The Open Brand certification program Test Suite VSU version 4.1.0 Test Identification Sockets/getsockopt 8 Problem Summary MSF4U.00009 An MSF is requested because the implementation does not set the size requested for SO_RCVBUF. Problem Text
On our implementation, getsockopt #8 and setsockopt #14 fail because they
expect getsockopt() to return a value identical to the optval argument
given in the previous call to setsockopt(). We request that the imple-
mentation be allowed to pass for now on the basis of minor system fault.
Our rationale follows.
In implementations where buffering occurs in multiple places, such as
STREAMS based implementations which queue in two or more places, it
is often impossible to set the total amount of buffering to an arbitrary
amount. An example of such an implementation would be one in which
queueing takes place in the stream head read queue and in TCP's
reassembly buffers.
In STREAMS based implementations this is due to the mismatch between the
byte-count specified with SO_RCVBUF and the per-message flow control
checks in STREAMS where the canput() function returns true/false indepen-
dent of the size of the message to be queued. For example if the stream
head flow control high-water mark is set to one byte, it is still pos-
sible to queue one full TCP message at the stream head. The only limit
on the size of this streams message is the TCP connection's maximum
segment size.
Given this, in response to the SO_RCVBUF getsockopt(), our implementation
of TCP tries to present a value that is as accurate as possible by rounding
it up to a multiple of the maximum segment size. As a result the value
returned to the getsockopt might be higher than the SO_RCVBUF value set
with setsockopt().
We would like the failure of this test case and the behavior of our
implementation to be classified a "minor fault in the system tested".
We also request that this matter to be referred to the specification
working group for consideration as an allowed behavior through a
Corrigenda to the specification and in future versions of the
specification.
./"
./"
./"
./" MAKE NO CHANGES BELOW THIS LINE WHEN SUBMITTING A REQUEST
./"
./"
./"
./"
./" Section C - Comments on Requests - X/Open use only
./"Test Output
TEST CASE: getsockopt
TEST PURPOSE #8
If the implementation supports a communications domain
and a socket type:
A successful call to int getsockopt(int socket, int
level, SO_RCVBUF, void *option_value, size_t
*option_len) shall report receive buffer size
information for the protocol level level for the
socket socket storing this information as an int in
the object pointed to by option_value, set the object
pointed to by option_len to the size of an int, and
return 0.
TEST: AF_INET SOCK_STREAM
PREP: Create test sockaddr_in: address = 129.146.85.212, port = 2269
PREP: Server: create socket
PREP: Server: bind address 129.146.85.212, port 2269 to socket
PREP: Server: listen on socket
PREP: Server: notify client server is ready
PREP: Server: accept connection
INFO: Server received signal 15
INFO: Server terminated
PREP: Wait for server to be ready
PREP: Create a socket
PREP: Connect socket to address 129.146.85.212, port 2269
PREP: Call setsockopt to set option value
TEST: Call getsockopt
TEST: Return value
TEST: Value
ERROR: Value incorrect, expected 128, received 8192
CLEANUP: Send SIGTERM to server
8 FAIL
TEST CASE: setsockopt
TEST PURPOSE #14
If the implementation supports a communications domain
and a socket type:
A call to int setsockopt(int socket, int level,
SO_RCVBUF, const void *option_value, size_t
option_len) shall set the receive buffer size for the
protocol level level for the socket socket.
TEST: AF_INET SOCK_STREAM
PREP: Create test sockaddr_in: address = 129.146.85.212, port = 1113
PREP: Server: create socket
PREP: Server: bind address 129.146.85.212, port 1113 to socket
PREP: Server: listen on socket
PREP: Server: notify client server is ready
PREP: Server: accept connection
INFO: Server: accepted connection from address 129.146.85.212, port 33408
PREP: echo_server: read and echo data
INFO: Server received signal 15
INFO: Server terminated
PREP: Wait for server to be ready
PREP: Create a socket
PREP: Connect socket to address 129.146.85.212, port 1113
TEST: Call setsockopt
TEST: Return value
PREP: Set variable where value will be stored to -1
TEST: Check value with getsockopt
ERROR: Value incorrect, expected 128, received 8192
CLEANUP: Send SIGTERM to server
14 FAIL
Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
A temporary waiver for a minor system fault is recommended.
We believe these failures will have minimal impact on application
portability.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Minor System Fault (MSF) Review Conclusion
A Temporary Waiver is granted.
Problem Reporting System Options:
- View Report 1095
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority