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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 1603 Actions


    Problem Report Number 1603
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Permanent Interpretation (PIN)
    Problem Resolution ID PIN.X.0160
    Raised 1996-04-02 08:00
    Updated 2003-03-13 08:00
    Published 1996-04-26 08:00
    Product Standard Sockets (UNIX 95)
    Certification Program The Open Brand certification program
    Test Suite VSU version 4.1.0
    Test Identification CAPI.os/sockets/recv 2
    Specification Networking Services Issue 4
    Location in Spec See Problem Text
    Problem Summary PIN4U.00026 This IR claims that MSG_WAITALL is not a required flag to be supported.
    Problem Text
    This IR claims that MSG_WAITALL is not a required flag to be supported.

    All of the above testcases fail because they are attempting to call
    either recv, recvmsg, or recvfrom with the MSG_WAITALL flag set. We
    do not support this flag on these calls and the EOPNOTSUPP indicates
    that it is allowed that this flag may not be supported on some socket
    types or protocols.

    The test suite should control the use of this flag by a configuration
    variable and cannot assume that all implementations under test support
    setting this flag.
    Test Output
    TEST PURPOSE #2
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    A call to ssize_t recv(int socket, void *buffer,
    size_t length, int flags) when MSG_WAITALL is set in
    flags shall block until the full amount of data
    requested can be returned.
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 4249
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 198.151.241.50, port 4249
    PREP: Send test data
    PREP: Send more test data which will be echoed after a delay
    TEST: Receive blocks until both messages received
    ERROR: recv call failed, errno = 1112(EOPNOTSUPP - Operation not
    supported on socket)
    CLEANUP: Send SIGTERM to server
    PREP: Server: create socket
    PREP: Server: bind address 198.151.241.50, port 4249 to socket
    PREP: Server: listen on socket
    PREP: Server: notify client server is ready
    PREP: Server: accept connection
    INFO: Server: accepted connection from address 198.151.241.50,
    port 1097
    PREP: echo_server: read and echo data
    INFO: echo_server: echoed 11 bytes of data (ABC123TEST!)
    INFO: Server received signal 15
    INFO: Server terminated
    2 FAIL

    TEST CASE: recvfrom

    TEST PURPOSE #4
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    A call to ssize_t recvfrom(int socket, void *buffer,
    size_t length, int flags, struct sockaddr *address,
    size_t *address_len) when MSG_WAITALL is set in flags
    shall block until the full amount of data requested
    can be returned.
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 3773
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 198.151.241.50, port 3773
    PREP: Send test data
    PREP: Send more test data which will be echoed after a delay
    TEST: Receive blocks until both messages received
    ERROR: recvfrom call failed, errno = 1112(EOPNOTSUPP - Operation not
    supported on socket)
    CLEANUP: Send SIGTERM to server
    PREP: Server: create socket
    PREP: Server: bind address 198.151.241.50, port 3773 to socket
    PREP: Server: listen on socket
    PREP: Server: notify client server is ready
    PREP: Server: accept connection
    INFO: Server: accepted connection from address 198.151.241.50,
    port 1106
    PREP: echo_server: read and echo data
    INFO: echo_server: echoed 11 bytes of data (ABC123TEST!)
    INFO: Server received signal 15
    INFO: Server terminated
    4 FAIL

    TEST CASE: recvmsg

    TEST PURPOSE #7
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    A call to ssize_t recvmsg(int socket, struct msghdr
    *message, int flags) when MSG_WAITALL is set in flags
    shall block until the full amount of data requested
    can be returned.
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 2257
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 198.151.241.50, port 2257
    PREP: Send test data
    PREP: Send another test data message with a delay before echo
    TEST: rcvmsg blocks until both messages received
    ERROR: recvmsg call failed, errno = 1112(EOPNOTSUPP - Operation not
    supported on socket)
    CLEANUP: Send SIGTERM to server
    PREP: Server: create socket
    PREP: Server: bind address 198.151.241.50, port 2257 to socket
    PREP: Server: listen on socket
    PREP: Server: notify client server is ready
    PREP: Server: accept connection
    IN: Server: accepted connection from address 198.151.241.50, port 1117
    PREP: echo_server: read and echo data
    INFO: echo_server: echoed 25 bytes of data (ABCDEFGHIJKLMNOPQ123TEST!)
    INFO: Server received signal 15
    INFO: Server terminated
    7 FAIL

    TEST CASE: send

    TEST PURPOSE #1
    If the implementation supports a communications domain
    and a socket type:
    A successful call to ssize_t send(int socket, const
    void *buffer, size_t length, int flags) shall initiate
    transmission of the data in the buffer described by
    buffer and length to the remote peer for the socket
    socket and return the number of bytes sent.
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 1781
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 198.151.241.50, port 1781
    PREP: Zero receive buffer
    TEST: Send test data
    TEST: Return value
    TEST: Receive test data
    ERROR: recv call failed, errno = 1112(EOPNOTSUPP - Operation not
    supported on socket)
    CLEANUP: Send SIGTERM to server
    PREP: Server: create socket
    PREP: Server: bind address 198.151.241.50, port 1781 to socket
    PREP: Server: listen on socket
    PREP: Server: notify client server is ready
    PREP: Server: accept connection
    INFO: Server: accepted connection from address 198.151.241.50, port
    1123
    PREP: echo_server: read and echo data
    INFO: echo_server: echoed 11 bytes of data (ABC123TEST!)
    INFO: Server received signal 15
    INFO: Server terminated
    1 FAIL

    TEST CASE: sendmsg

    TEST PURPOSE #1
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    A successful call to ssize_t sendmsg(int socket, const
    struct msghdr *message, int flags) for a
    connection-oriented socket shall initiate transmission
    of the data in the message described by message to the
    remote peer for the socket and return the number of
    bytes sent.
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 4809
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 4810
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 198.151.241.50, port 4809
    TEST: Send test data
    TEST: Return value
    TEST: Receive test data
    ERROR: recv call failed, errno = 1112(EOPNOTSUPP - Operation not
    supported on socket)
    CLEANUP: Send SIGTERM to server
    PREP: Server: create socket
    PREP: Server: bind address 198.151.241.50, port 4809 to socket
    PREP: Server: listen on socket
    PREP: Server: notify client server is ready
    PREP: Server: accept connection
    INFO: Server: accepted connection from address 198.151.241.50,
    port 1130
    PREP: echo_server: read and echo data
    INFO: echo_server: echoed 12 bytes of data (!ABC123TEST!)
    INFO: Server received signal 15
    INFO: Server terminated
    1 FAIL

    TEST CASE: sendto

    TEST PURPOSE #1
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    A successful call to ssize_t sendto(int socket, const
    void *message, size_t length, int flags, const struct
    sockaddr *dest_addr, size_t dest_len) for a
    connection-oriented socket shall initiate transmission
    of the data in the message described by message to the
    remote peer for the socket and return the number of
    bytes sent.
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 65173
    PREP: Create test sockaddr_in: address = 198.151.241.50, port = 65174
    PREP: Wait for server to be ready
    PREP: Create a socket
    PREP: Connect socket to address 198.151.241.50, port 65173
    PREP: Zero receive buffer
    TEST: Send test data
    TEST: Return value
    TEST: Receive test data
    ERROR: recv call failed, errno = 1112(EOPNOTSUPP - Operation not
    supported on socket)
    CLEANUP: Send SIGTERM to server
    PREP: Server: create socket
    PREP: Server: bind address 198.151.241.50, port 65173 to socket
    PREP: Server: listen on socket
    PREP: Server: notify client server is ready
    PREP: Server: accept connection
    INFO: Server: accepted connection from address 198.151.241.50,
    port 1138
    PREP: echo_server: read and echo data
    INFO: echo_server: echoed 11 bytes of data (ABC123TEST!)
    INFO: Server received signal 15
    INFO: Server terminated
    1 FAIL

    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 refused.

    We believe the test is correct.

    The use of EOPNOTSUPP only applies to flags that are not supported
    on particular protocols. Flags cannot be generically unsupported.

    The conditions under which EOPNOTSUPP may be returned for spec-defined
    flags are delineated in the DESCRIPTION sections for these calls.
    MSG_OOB is the only flag that states:

    The significance and semantics of out-of-band data are
    protocol-specific.

    No such provision is made for MSG_WAITALL.

    These statements are consistent with statements made in POSIX.1g/D6.1 in
    sections A.2.1.2.7, A.2.1.3.6, A.3.5.2.1.4, and A.3.5.3.1.4, Other
    Protocol-Specific Behavior. These sections describe when particular
    flags may return EOPNOTSUPP. MSG_OOB is the only flag that may return
    EOPNOTSUPP as described in the listed sections.

    Review Type Expert Group Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution No Resolution Given
    Review Conclusion
    The Base Working Group agreed that this is a grey area in the specification
    - the feature is poorly specified.

    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:

     

    Back   


Contact the Certification Authority