Sun, 02 Dec 2007 17:33:03 +0000
More catching up on things, from 7e27312a7d07beb1786494161664e0f7502e8ea9:
"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."
| libpurple/protocols/msnp9/directconn.c | file | annotate | diff | comparison | revisions | |
| libpurple/protocols/msnp9/servconn.c | file | annotate | diff | comparison | revisions |
--- 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; }