Mercurial > pidgin
changeset 21726:56f78bc6c53e
More catching up on things, from 8548e491a5b470d5665cb1cf87a7b0caaa3c87a5:
"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 | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Sun, 02 Dec 2007 17:33:03 +0000 |
parents | 960c07f6f052 |
children | 1a27ded7f9e3 |
files | libpurple/protocols/msnp9/directconn.c libpurple/protocols/msnp9/servconn.c |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msnp9/directconn.c Sun Dec 02 17:29:30 2007 +0000 +++ b/libpurple/protocols/msnp9/directconn.c Sun Dec 02 17:33:03 2007 +0000 @@ -81,6 +81,7 @@ create_listener(int port) { int fd; + int flags; const int on = 1; #if 0 @@ -156,7 +157,8 @@ return -1; } - fcntl(fd, F_SETFL, O_NONBLOCK); + flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, flags | O_NONBLOCK); return fd; }
--- a/libpurple/protocols/msnp9/servconn.c Sun Dec 02 17:29:30 2007 +0000 +++ b/libpurple/protocols/msnp9/servconn.c Sun Dec 02 17:33:03 2007 +0000 @@ -468,6 +468,7 @@ create_listener(int port) { int fd; + int flags; const int on = 1; #if 0 @@ -543,7 +544,8 @@ return -1; } - fcntl(fd, F_SETFL, O_NONBLOCK); + flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, flags | O_NONBLOCK); return fd; }