Mercurial > pidgin.yaz
diff libpurple/protocols/msn/directconn.c @ 20922:d9cbd249619b
Fix all our calls to fcntl(listenfd, F_SETFL, O_NONBLOCK);
fcntl() with F_SETFL overwrites the old flags with the new ones, so
you should call fcntl() with F_GETFL, then OR that value with
O_NONBLOCK before setting the flags. We've been doing this
wrong for a long time and it hasn't seemed to hurt anything,
but I thought it would be good to fix it.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 14 Oct 2007 09:57:32 +0000 |
parents | 02df6998b466 |
children | 89c7be36fd61 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/directconn.c Sat Oct 13 21:55:41 2007 +0000 +++ b/libpurple/protocols/msn/directconn.c Sun Oct 14 09:57:32 2007 +0000 @@ -80,6 +80,7 @@ create_listener(int port) { int fd; + int flags; const int on = 1; #if 0 @@ -155,7 +156,8 @@ return -1; } - fcntl(fd, F_SETFL, O_NONBLOCK); + flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, flags | O_NONBLOCK); return fd; }