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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1307 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 1307.


Report 1307 Actions


    Problem Report Number 1307
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Test Suite Deficiency (TSD)
    Problem Resolution ID TSD.X.0589
    Raised 1970-01-01 08:00
    Updated 2003-03-13 08:00
    Published 1998-05-28 08:00
    Product Standard Sockets V2 (UNIX 98)
    Certification Program The Open Brand certification program
    Test Suite VSU version 5.0.2
    Test Identification CAPIsockets/send 27
    Problem Summary TSD4U.00229 Tests should not attempt to fill DGRAM sockets unless flow control is provided for them.
    Problem Text
    Test cases and numbers: send 27, sendmsg 46, sendto 44

    The ERROR cases above correspond to execution of the tests on SOCK_DGRAM type
    sockets. The test sets O_NONBLOCK on the socket and attempts to fill up the
    socket send buffer. It then expects to receive an EWOULDBLOCK error on a
    subsequent send.

    Quote from XNS Issue 5 - Page 160.

    "If space is not available at the sending socket to hold the message to
    be transmitted and the socket file descriptor does not have O_NONBLOCK set,
    send() blocks until space is available. If space is not available at the
    sending socket to hold the message to be transmitted and the socket file
    descriptor does have O_NONBLOCK set, send() will fail."

    It is implementation dependent whether the condition "space is not available",
    is ever achieved on SOCK_DGRAM type sockets. The implementation can discard
    data before it runs out of space on such socket endpoints, as it is permitted
    to do so on an implementation of an unreliable message transfer. Unreliable
    message transfer is the specified behaviour for SOCK_DGRAM sockets, as
    specified by XNS Issue 5

    Quote from XNS Issue 5 - Page 172

    "SOCK_DGRAM Provides datagrams, which are connectionless-mode, unreliable
    messages of fixed maximum length."

    In the case of SOCK_DGRAM type sockets of AF_INET address family, the
    underlying protocol viz. UDP, does not support flow control. In our
    implementation, all the data is sent, but is discarded at the receiving
    end, if the receiver is overwhelmed with data.

    In the case of SOCK_DGRAM type sockets of AF_UNIX address family, the
    protocols are not as well defined and documented as UDP of AF_INET address
    family. It is implementation defined whether flow control is implemented or
    whether data is discarded. The tests may or may not succeed on SOCK_DGRAM type
    sockets of AF_UNIX address family, depending on implementation specific
    behaviour.

    Hence the test cannot assume the precondition that it can fill up the socket
    send buffer on SOCK_DGRAM type sockets.

    Note: The ERROR results shown by the test output are for the case of
    SOCK_DGRAM type sockets of AF_INET address family only. The results for
    the case of SOCK_DGRAM type sockets of AF_UNIX address family are not
    available since the test does not continue execution beyond the first
    failure.
    Test Output
    TEST CASE: send

    TEST PURPOSE #27
    If the implementation supports a communications domain
    and a socket type and allows the option to be set:
    The SO_SNDTIMEO option shall define the amount of time
    to block because flow control prevents data from
    being sent for a call to ssize_t send(int socket,
    const void *buffer, size_t length, int flags).
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 129.146.85.169, port = 2293
    PREP: Server: create socket
    PREP: Server: bind address 129.146.85.169, port 2293 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.169, port 39978
    PREP: sleep_server: wait for parent to complete test
    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.169, port 2293
    PREP: Set O_NONBLOCK
    PREP: Fill up the server
    PREP: Clear O_NONBLOCK on socket
    PREP: Call setsockopt to set timeout value
    INFO: setsockopt for SO_SNDTIMEO unsupported for AF_INET SOCK_STREAM socket type/default protocol
    TEST: AF_UNIX SOCK_STREAM
    PREP: Create test sockaddr_un: path = ../tmp/unix.0cPIcf
    PREP: Server: create socket
    PREP: Server: bind address ../tmp/unix.0cPIcf to socket
    PREP: Server: listen on socket
    PREP: Server: notify client ready to accept
    PREP: Server: accept connection
    INFO: Server: accepted connection from address ../tmp/uclient.mek_p_
    PREP: sleep_server: wait for parent to complete test
    INFO: Server received signal 15
    INFO: Server terminated
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Bind address ../tmp/uclient.mek_p_ to socket
    PREP: Connect to address ../tmp/unix.0cPIcf
    PREP: Set O_NONBLOCK
    PREP: Clear O_NONBLOCK on socket
    PREP: Call setsockopt to set timeout value
    INFO: setsockopt for SO_SNDTIMEO unsupported for AF_UNIX SOCK_STREAM socket type/default protocol
    TEST: AF_INET SOCK_DGRAM
    PREP: Create test sockaddr_in: address = 129.146.85.169, port = 2294
    PREP: Server: create socket
    PREP: Server: bind address 129.146.85.169, port 2294 to socket
    PREP: Server: notify client server is ready
    PREP: Server: wait for parent to complete test
    INFO: Server terminated
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 129.146.85.169, port 2294
    PREP: Set O_NONBLOCK
    PREP: Fill up the server
    ERROR: Socket did not fill after 2000 messages
    CLEANUP: Have server flush data
    ERROR: Timed out waiting for completion.
    27 UNRESOLVED

    TEST CASE: sendmsg

    TEST PURPOSE #46
    If the implementation supports a communications domain
    and a socket type and allows the option to be set:
    The SO_SNDTIMEO option shall define the amount of time
    to block because flow control prevents data from
    being sent for a call to ssize_t sendmsg(int socket,
    const struct msghdr *message, int flags).
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 129.146.85.169, port = 2921
    PREP: Server: create socket
    PREP: Server: bind address 129.146.85.169, port 2921 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.169, port 39989
    PREP: sleep_server: wait for parent to complete test
    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.169, port 2921
    PREP: Set O_NONBLOCK
    PREP: Fill up the server
    PREP: Clear O_NONBLOCK on socket
    PREP: Call setsockopt to set timeout value
    INFO: setsockopt for SO_SNDTIMEO unsupported for AF_INET SOCK_STREAM socket type/default protocol
    TEST: AF_UNIX SOCK_STREAM
    PREP: Create test sockaddr_un: path = ../tmp/unix.0C_w9N
    PREP: Server: create socket
    PREP: Server: bind address ../tmp/unix.0C_w9N to socket
    PREP: Server: listen on socket
    PREP: Server: notify client ready to accept
    PREP: Server: accept connection
    INFO: Server: accepted connection from address ../tmp/uclient.L7BEd_
    PREP: sleep_server: wait for parent to complete test
    INFO: Server received signal 15
    INFO: Server terminated
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Bind address ../tmp/uclient.L7BEd_ to socket
    PREP: Connect to address ../tmp/unix.0C_w9N
    PREP: Set O_NONBLOCK
    PREP: Clear O_NONBLOCK on socket
    PREP: Call setsockopt to set timeout value
    INFO: setsockopt for SO_SNDTIMEO unsupported for AF_UNIX SOCK_STREAM socket type/default protocol
    TEST: AF_INET SOCK_DGRAM
    PREP: Create test sockaddr_in: address = 129.146.85.169, port = 2922
    PREP: Server: create socket
    PREP: Server: bind address 129.146.85.169, port 2922 to socket
    PREP: Server: notify client server is ready
    PREP: Server: wait for parent to complete test
    INFO: Server terminated
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 129.146.85.169, port 2922
    PREP: Set O_NONBLOCK
    PREP: Fill up the server
    ERROR: Socket did not fill after 2000 messages
    CLEANUP: Have server flush data
    ERROR: Timed out waiting for completion.
    46 UNRESOLVED

    TEST CASE: sendto

    TEST PURPOSE #44
    If the implementation supports a communications domain
    and a socket type and allows the option to be set:
    The SO_SNDTIMEO option shall define the amount of time
    to block because flow control prevents data from
    being sent for a call to ssize_t sendto(int socket,
    const void *message, size_t length, int flags, const
    struct sockaddr *dest_addr, size_t dest_len).
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 129.146.85.169, port = 4049
    PREP: Server: create socket
    PREP: Server: bind address 129.146.85.169, port 4049 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.169, port 40002
    PREP: sleep_server: wait for parent to complete test
    INFO: sleep_server: parent completed test
    CLEANUP: sleep_server: flush data
    INFO: Server terminated
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 129.146.85.169, port 4049
    PREP: Set O_NONBLOCK
    PREP: Fill up the server
    PREP: Clear O_NONBLOCK on socket
    PREP: Call setsockopt to set timeout value
    INFO: setsockopt for SO_SNDTIMEO unsupported for AF_INET SOCK_STREAM socket type/default protocol
    TEST: AF_UNIX SOCK_STREAM
    PREP: Create test sockaddr_un: path = ../tmp/unix.03bb1o
    PREP: Server: create socket
    PREP: Server: bind address ../tmp/unix.03bb1o to socket
    PREP: Server: listen on socket
    PREP: Server: notify client ready to accept
    PREP: Server: accept connection
    INFO: Server: accepted connection from address ../tmp/uclient.00EfOU
    PREP: sleep_server: wait for parent to complete test
    CLEANUP: sleep_server: flush data
    INFO: Server terminated
    INFO: Server received signal 15
    INFO: Server terminated
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Bind address ../tmp/uclient.00EfOU to socket
    PREP: Connect to address ../tmp/unix.03bb1o
    PREP: Set O_NONBLOCK
    PREP: Clear O_NONBLOCK on socket
    PREP: Call setsockopt to set timeout value
    INFO: setsockopt for SO_SNDTIMEO unsupported for AF_UNIX SOCK_STREAM socket type/default protocol
    TEST: AF_INET SOCK_DGRAM
    PREP: Create test sockaddr_in: address = 129.146.85.169, port = 4050
    PREP: Server: create socket
    PREP: Server: bind address 129.146.85.169, port 4050 to socket
    PREP: Server: notify client server is ready
    PREP: Server: wait for parent to complete test
    INFO: Server terminated
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 129.146.85.169, port 4050
    PREP: Set O_NONBLOCK
    PREP: Fill up the server
    ERROR: Socket did not fill after 2000 messages
    CLEANUP: Have server flush data
    ERROR: Timed out waiting for completion.
    44 UNRESOLVED

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    We recommend this request be sent for 14 day review.

    We tend to think the submitter has a valid point but as the primary
    thrust here is imputing implementation defined behavior not defined by
    the XNS we believe this should be reviewed by those responsible
    for the specification.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution No Resolution Given
    Review Conclusion
    In order to move forward on this issue we have granted a
    Temporary Interpretation. It is also being sent out for
    a 14 day review to consider whether it should be a Temporary Waiver
    or Permanent Interpretation.

    Review Type Expert Group Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution No Resolution Given
    Review Conclusion
    The test suite is attempting to test a condition that is not testable. It
    is assuming that the send buffer is full when a large number of messages
    have been queued, but it is possible that the messages have in fact been
    transmitted (and that some have been discarded by the network). In
    this case a test suite deficiency should be granted.

    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:

     

    Back   


Contact the Certification Authority