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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 1255 Actions


    Problem Report Number 1255
    Submitter's Classification Specification problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0457
    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.0.2
    Test Identification Sockets/listen 3
    Problem Summary PG4U.00008 Specification should treat a backlog of less than or equal to 0 to mean a backlog of 1.
    Problem Text
    It has been a common practice especially for those BSD based
    implementation to allow the socket to receive connection
    requests even when an application has set backlog to 0. Changing
    such behavior can cause unnecessary hardship for applications
    to migrate to the X/Open specification.

    If we literally treats a backlog of 0 to mean disabling the socket
    from receiving an incoming connection request, then there is a
    potential for an application to hang indefinitely if it later on
    calls accept() without setting the NONBLOCK option.

    It is the author's opinion the specification should treat a backlog
    of less than or equal to 0 to mean a backlog of 1.
    Test Output
    If the implementation supports a communications domain and a
    connection-oriented socket type: A call to int listen(int
    socket, int backlog) when backlog is negative shall set the
    length of the socket's listen queue to 0.

    JOURNAL FILE OUTPUT:
    --------------------

    PREP: Get VSU_CONNECT_TIMEOUT configuration variable
    TEST: AF_INET SOCK_STREAM
    PREP: Create test sockaddr_in: address = 15.10.41.16, port = 2065
    PREP: Create a socket
    PREP: Wait for child to be ready
    TEST: connect is rejected
    TEST: Return value
    ERROR: connect call succeeded unexpectedly, returned 0
    PREP: Child: create socket
    PREP: Child: bind to socket
    PREP: Child: listen on socket with backlog of -1
    PREP: Child: tell parent ready
    PREP: Child: wait for parent to complete test
    FAIL

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    The listen() spec states

    The listen() function marks a connection-oriented
    socket, specified by the socket argument, as
    accepting connections, and limits the number of
    outstanding connections in the socket's listen queue
    to the value specified by the backlog argument.

    This clearly states that backlog will be exactly equal to the
    number of pending connection requests allowed on a socket at any
    one time.

    Contrary to the opinion above, Our understanding is that a
    backlog of 0 would still allow a connection to take place so long
    as an accept() was waiting when a connection request arrived.
    In this case no queue is necessary.

    Our experience is that historical BSD behavior limits the number
    of connection requests to (3 * backlog / 2) + 1. We believe this
    is really the behavior being requested here. This is far from
    the behavior currently specified.

    We recommend this request be refused.

    Review Type Expert Group Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution No Resolution Given
    Review Conclusion
    The result of the review by XoTGbase was that they were in agreement with
    the consultant.

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

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority