diff -r 1a6e2dd87657 -r 7e27312a7d07 libpurple/proxy.c --- a/libpurple/proxy.c Sat Oct 13 21:55:41 2007 +0000 +++ b/libpurple/proxy.c Sun Oct 14 09:57:32 2007 +0000 @@ -449,6 +449,8 @@ static void proxy_connect_none(PurpleProxyConnectData *connect_data, struct sockaddr *addr, socklen_t addrlen) { + int flags; + purple_debug_info("proxy", "Connecting to %s:%d with no proxy\n", connect_data->host, connect_data->port); @@ -460,7 +462,8 @@ return; } - fcntl(connect_data->fd, F_SETFL, O_NONBLOCK); + flags = fcntl(connect_data->fd, F_GETFL); + fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); #ifndef _WIN32 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); #endif @@ -881,6 +884,8 @@ static void proxy_connect_http(PurpleProxyConnectData *connect_data, struct sockaddr *addr, socklen_t addrlen) { + int flags; + purple_debug_info("proxy", "Connecting to %s:%d via %s:%d using HTTP\n", connect_data->host, connect_data->port, @@ -895,14 +900,16 @@ return; } - fcntl(connect_data->fd, F_SETFL, O_NONBLOCK); + flags = fcntl(connect_data->fd, F_GETFL); + fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); #ifndef _WIN32 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); #endif if (connect(connect_data->fd, addr, addrlen) != 0) { - if ((errno == EINPROGRESS) || (errno == EINTR)) { + if ((errno == EINPROGRESS) || (errno == EINTR)) + { purple_debug_info("proxy", "Connection in progress\n"); if (connect_data->port != 80) @@ -1036,6 +1043,8 @@ static void proxy_connect_socks4(PurpleProxyConnectData *connect_data, struct sockaddr *addr, socklen_t addrlen) { + int flags; + purple_debug_info("proxy", "Connecting to %s:%d via %s:%d using SOCKS4\n", connect_data->host, connect_data->port, @@ -1050,7 +1059,8 @@ return; } - fcntl(connect_data->fd, F_SETFL, O_NONBLOCK); + flags = fcntl(connect_data->fd, F_GETFL); + fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); #ifndef _WIN32 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); #endif @@ -1604,6 +1614,8 @@ static void proxy_connect_socks5(PurpleProxyConnectData *connect_data, struct sockaddr *addr, socklen_t addrlen) { + int flags; + purple_debug_info("proxy", "Connecting to %s:%d via %s:%d using SOCKS5\n", connect_data->host, connect_data->port, @@ -1618,7 +1630,8 @@ return; } - fcntl(connect_data->fd, F_SETFL, O_NONBLOCK); + flags = fcntl(connect_data->fd, F_GETFL); + fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); #ifndef _WIN32 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); #endif