improve socket connect() error reporting with poll()

turns out that poll() may (and on linux does) signal POLLERR on
connection failure. this is unlike select(), which is specified to
signal write readiness in every case.
consequently, check whether we are connecting before checking for
POLLERR.
This commit is contained in:
Oswald Buddenhagen 2013-03-29 18:11:57 +01:00
parent d1900941f4
commit 37a28d8133

View File

@ -633,14 +633,14 @@ socket_fd_cb( int events, void *aux )
{
conn_t *conn = (conn_t *)aux;
if (events & POLLERR) {
error( "Unidentified socket error from %s.\n", conn->name );
socket_fail( conn );
if (conn->state == SCK_CONNECTING) {
socket_connected( conn );
return;
}
if (conn->state == SCK_CONNECTING) {
socket_connected( conn );
if (events & POLLERR) {
error( "Unidentified socket error from %s.\n", conn->name );
socket_fail( conn );
return;
}