rtspconnection: add OSX specific hack to detect when a connection is refused

Unlike linux, OSX wakes up select with POLLOUT (instead of POLLERR) when
connect() is done async and the connection is refused. Therefore always check
for the socket error state using getsockopt (..., SO_ERROR, ...) after a
connection attempt.
This commit is contained in:
Alessandro Decina 2011-08-15 23:41:24 +02:00
parent 59f2249284
commit 22cc529409

View file

@ -592,6 +592,14 @@ do_connect (const gchar * ip, guint16 port, GstPollFD * fdout,
getsockopt (fd, SOL_SOCKET, SO_ERROR, (char *) &errno, &len);
#endif
goto sys_error;
} else {
#ifdef __APPLE__
/* osx wakes up select with POLLOUT if the connection is refused... */
socklen_t len = sizeof (errno);
getsockopt (fd, SOL_SOCKET, SO_ERROR, (char *) &errno, &len);
if (errno != 0)
goto sys_error;
#endif
}
gst_poll_fd_ignored (fdset, fdout);