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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 1175 Actions


    Problem Report Number 1175
    Submitter's Classification Specification problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0377
    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.1.0
    Test Identification Sockets/connect 6,7,8
    Problem Summary PG4U.00090 This request claims that UNIX domain sockets need not support O_NONBLOCK semantics.
    Problem Text
    If connect peer issues listen() call in the case of asynchronous mode a UNIX
    domain socket, the test suite expects that connect() a call is successfull.
    But we can't find such a description in CAE specification.
    Test Output
    TEST PURPOSE #6
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    A call to int connect(int socket, const struct
    sockaddr *address, size_t address_len) when the
    connection cannot be immediately established and
    O_NONBLOCK is set for socket shall return -1, set
    errno to EINPROGRESS, and establish the connection
    asynchronously.
    PREP: Get VSU_CONNECT_TIMEOUT configuration variable
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 133.203.212.88, port = 4061
    PREP: Create three sockets
    PREP: Wait for child to be ready
    PREP: Connect twice to fill queue
    PREP: Set O_NONBLOCK
    TEST: connect returns with EINPROGRESS
    TEST: Did not block
    PREP: Notify child to accept
    TEST: Await notification connections completed
    TEST: AF_UNIX SOCK_STREAM
    PREP: Create test sockaddr_un: path = ../tmp/unix.a000O-
    PREP: Child: create socket
    PREP: Child: bind to socket
    PREP: Child: listen on socket with backlog of 2
    PREP: Child: tell parent ready
    PREP: Child: wait for parent to become ready
    PREP: Child: accept queued connections
    PREP: Child: accept connection being asynchronously established
    PREP: Child: notify parent connections completed
    PREP: Child: wait for parent to complete test
    PREP: Create three sockets
    PREP: Wait for child to be ready
    PREP: Connect twice to fill queue
    PREP: Set O_NONBLOCK
    TEST: connect returns with EINPROGRESS
    ERROR: Call to connect failed unexpectedly, expected errno = EINPROGRESS, errno = 5(EIO - I/O error)
    PREP: Child: create socket
    PREP: Child: bind to socket
    PREP: Child: listen on socket with backlog of 2
    PREP: Child: tell parent ready
    6 FAIL

    TEST PURPOSE #7
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    A call to int connect(int socket, const struct
    sockaddr *address, size_t address_len) when
    asynchronous connection establishment is in progress
    for socket shall return -1 and set errno to EALREADY.
    PREP: Get VSU_CONNECT_TIMEOUT configuration variable
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 133.203.212.88, port = 1205
    PREP: Create three sockets
    PREP: Wait for child to be ready
    PREP: Connect twice to fill queue
    PREP: Set O_NONBLOCK
    TEST: connect returns with EINPROGRESS
    TEST: Did not block
    TEST: connect returns with EALREADY
    CLEANUP: Close sockets, kill child
    TEST: AF_UNIX SOCK_STREAM
    PREP: Create test sockaddr_un: path = ../tmp/unix.a000Ok
    PREP: Child: create socket
    PREP: Child: bind to socket
    PREP: Child: listen on socket with backlog of 2
    PREP: Child: tell parent ready
    PREP: Child: wait for parent to complete test
    PREP: Create three sockets
    PREP: Wait for child to be ready
    PREP: Connect twice to fill queue
    PREP: Set O_NONBLOCK
    TEST: connect returns with EINPROGRESS
    ERROR: Call to connect failed unexpectedly, expected errno = EINPROGRESS, errno = 5(EIO - I/O error)
    PREP: Child: create socket
    PREP: Child: bind to socket
    PREP: Child: listen on socket with backlog of 2
    PREP: Child: tell parent ready
    7 FAIL

    TEST PURPOSE #8
    If the implementation supports a communications domain
    and a connection-oriented socket type:
    After a connection is asynchronously established due
    to a call to int connect(int socket, const struct
    sockaddr *address, size_t address_len) select() and
    poll() shall indicate socket is ready for writing.
    PREP: Get VSU_CONNECT_TIMEOUT configuration variable
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 133.203.212.88, port = 2305
    PREP: Create three sockets
    PREP: Wait for child to be ready
    PREP: Connect twice to fill queue
    PREP: Set O_NONBLOCK
    TEST: connect returns with EINPROGRESS
    PREP: Notify child to accept
    TEST: Await notification connections completed
    TEST: Select reports socket ready to write
    TEST: Poll reports socket ready to write
    TEST: AF_UNIX SOCK_STREAM
    PREP: Create test sockaddr_un: path = ../tmp/unix.a000Ov
    PREP: Child: create socket
    PREP: Child: bind to socket
    PREP: Child: listen on socket with backlog of 2
    PREP: Child: tell parent ready
    PREP: Child: wait for parent to become ready
    PREP: Child: accept queued connections
    PREP: Child: accept connection being asynchronously established
    PREP: Child: notify parent connections completed
    PREP: Child: wait for parent to complete test
    PREP: Create three sockets
    PREP: Wait for child to be ready
    PREP: Connect twice to fill queue
    PREP: Set O_NONBLOCK
    TEST: connect returns with EINPROGRESS
    ERROR: Call to connect failed unexpectedly, expected errno = EINPROGRESS, errno = 5(EIO - I/O error)
    PREP: Child: create socket
    PREP: Child: bind to socket
    PREP: Child: listen on socket with backlog of 2
    PREP: Child: tell parent ready
    8 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.

    The connect() spec states that

    If the connection cannot be established immediately and
    O_NONBLOCK is set for the file descriptor for the socket,
    connect() will fail and set errno to [EINPROGRESS], but the
    connection request will not be aborted, and the connection will
    be established asynchronously.

    We believe the submitter assumes that it is possible to pick and
    choose functionality from the the spec that will apply to
    different socket types unless the spec specificly states that the
    functionality is required by that socket type. This is not true.
    All functionality presented by the spec is required for all
    socket types unless the spec specifically states it is optional
    for a socket type.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Rejected (REJ)
    Review Conclusion
    X
    This request is refused.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority