Mercurial > pidgin
diff libpurple/protocols/qq/qq_proxy.c @ 20347:04fe5601fedb
applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
through 8548e491a5b470d5665cb1cf87a7b0caaa3c87a5
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Sun, 21 Oct 2007 04:46:33 +0000 |
| parents | 44b4e8bd759b |
| children | 35b4f1dc4c8d |
line wrap: on
line diff
--- a/libpurple/protocols/qq/qq_proxy.c Sun Oct 21 04:44:56 2007 +0000 +++ b/libpurple/protocols/qq/qq_proxy.c Sun Oct 21 04:46:33 2007 +0000 @@ -258,6 +258,7 @@ static gint _qq_proxy_none(struct PHB *phb, struct sockaddr *addr, socklen_t addrlen) { gint fd = -1; + int flags; purple_debug(PURPLE_DEBUG_INFO, "QQ", "Using UDP without proxy\n"); fd = socket(PF_INET, SOCK_DGRAM, 0); @@ -269,7 +270,8 @@ } /* we use non-blocking mode to speed up connection */ - fcntl(fd, F_SETFL, O_NONBLOCK); + flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, flags | O_NONBLOCK); /* From Unix-socket-FAQ: http://www.faqs.org/faqs/unix-faq/socket/ * @@ -301,7 +303,8 @@ } /* if errno */ } else { /* connect returns 0 */ purple_debug(PURPLE_DEBUG_INFO, "QQ", "Connected.\n"); - fcntl(fd, F_SETFL, 0); + flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, flags & ~O_NONBLOCK); phb->func(phb->data, fd, NULL); }
