| 756 } |
756 } |
| 757 |
757 |
| 758 flags = fcntl(connect_data->fd, F_GETFL); |
758 flags = fcntl(connect_data->fd, F_GETFL); |
| 759 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
759 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
| 760 #ifndef _WIN32 |
760 #ifndef _WIN32 |
| 761 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); |
761 if (fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC) != 0) |
| |
762 purple_debug_warning("proxy", "couldn't set FD_CLOEXEC\n"); |
| 762 #endif |
763 #endif |
| 763 |
764 |
| 764 if (connect(connect_data->fd, addr, addrlen) != 0) |
765 if (connect(connect_data->fd, addr, addrlen) != 0) |
| 765 { |
766 { |
| 766 if ((errno == EINPROGRESS) || (errno == EINTR)) |
767 if ((errno == EINPROGRESS) || (errno == EINTR)) |
| 818 } |
819 } |
| 819 |
820 |
| 820 flags = fcntl(connect_data->fd, F_GETFL); |
821 flags = fcntl(connect_data->fd, F_GETFL); |
| 821 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
822 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
| 822 #ifndef _WIN32 |
823 #ifndef _WIN32 |
| 823 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); |
824 if (fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC) != 0) |
| |
825 purple_debug_warning("proxy", "couldn't set FD_CLOEXEC\n"); |
| 824 #endif |
826 #endif |
| 825 |
827 |
| 826 if (connect(connect_data->fd, addr, addrlen) != 0) |
828 if (connect(connect_data->fd, addr, addrlen) != 0) |
| 827 { |
829 { |
| 828 if ((errno == EINPROGRESS) || (errno == EINTR)) |
830 if ((errno == EINPROGRESS) || (errno == EINTR)) |
| 1272 } |
1274 } |
| 1273 |
1275 |
| 1274 flags = fcntl(connect_data->fd, F_GETFL); |
1276 flags = fcntl(connect_data->fd, F_GETFL); |
| 1275 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
1277 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
| 1276 #ifndef _WIN32 |
1278 #ifndef _WIN32 |
| 1277 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); |
1279 if (fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC) != 0) |
| |
1280 purple_debug_warning("proxy", "couldn't FD_CLOEXEC\n"); |
| 1278 #endif |
1281 #endif |
| 1279 |
1282 |
| 1280 if (connect(connect_data->fd, addr, addrlen) != 0) { |
1283 if (connect(connect_data->fd, addr, addrlen) != 0) { |
| 1281 if (errno == EINPROGRESS || errno == EINTR) { |
1284 if (errno == EINPROGRESS || errno == EINTR) { |
| 1282 purple_debug_info("proxy", "Connection in progress\n"); |
1285 purple_debug_info("proxy", "Connection in progress\n"); |
| 1466 } |
1469 } |
| 1467 |
1470 |
| 1468 flags = fcntl(connect_data->fd, F_GETFL); |
1471 flags = fcntl(connect_data->fd, F_GETFL); |
| 1469 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
1472 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
| 1470 #ifndef _WIN32 |
1473 #ifndef _WIN32 |
| 1471 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); |
1474 if (fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC) != 0) |
| |
1475 purple_debug_warning("proxy", "couldn't set FD_CLOEXEC\n"); |
| 1472 #endif |
1476 #endif |
| 1473 |
1477 |
| 1474 if (connect(connect_data->fd, addr, addrlen) != 0) |
1478 if (connect(connect_data->fd, addr, addrlen) != 0) |
| 1475 { |
1479 { |
| 1476 if ((errno == EINPROGRESS) || (errno == EINTR)) |
1480 if ((errno == EINPROGRESS) || (errno == EINTR)) |
| 2126 } |
2130 } |
| 2127 |
2131 |
| 2128 flags = fcntl(connect_data->fd, F_GETFL); |
2132 flags = fcntl(connect_data->fd, F_GETFL); |
| 2129 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
2133 fcntl(connect_data->fd, F_SETFL, flags | O_NONBLOCK); |
| 2130 #ifndef _WIN32 |
2134 #ifndef _WIN32 |
| 2131 fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC); |
2135 if (fcntl(connect_data->fd, F_SETFD, FD_CLOEXEC) != 0) |
| |
2136 purple_debug_warning("proxy", "couldn't set FD_CLOEXEC\n"); |
| 2132 #endif |
2137 #endif |
| 2133 |
2138 |
| 2134 if (connect(connect_data->fd, addr, addrlen) != 0) |
2139 if (connect(connect_data->fd, addr, addrlen) != 0) |
| 2135 { |
2140 { |
| 2136 if ((errno == EINPROGRESS) || (errno == EINTR)) |
2141 if ((errno == EINPROGRESS) || (errno == EINTR)) |