Skip to content

non-TLS socket accepted is blocking by default #56

@veeg

Description

@veeg

The documentation for nopoll_conn_get_msg() states that the accepted socket will be non-blocking by default. This is not the case when the accepted socket has not enabled TLS.

The following line in the internal accept method states it will set non-blocking, and then it sets blocking.

nopoll/src/nopoll_conn.c

Lines 4692 to 4693 in e80b74a

/* configure non blocking mode */
nopoll_conn_set_sock_block (session, nopoll_true);

This is not the case for TLS sockets, as evident by this line:

nopoll/src/nopoll_conn.c

Lines 4874 to 4877 in e80b74a

/* don't complete here the operation but flag it as
* pending */
conn->pending_ssl_accept = nopoll_true;
nopoll_conn_set_sock_block (conn->session, nopoll_false);

Documentation for nopoll_conn_get_msg() states that default is non-blocking

nopoll/src/nopoll_conn.c

Lines 3034 to 3036 in e80b74a

* This function is design to not block the caller. However,
* connection socket must be in non-blocking configuration. If you
* have not configured anything, this is the default.

This confusing behavior has tripped up multiple co-workers of mine, including me for a time, until I fully comprehended both the websocket standard and the nopoll implementation

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions