More catching up on things, from 7e27312a7d07beb1786494161664e0f7502e8ea9:

Sun, 02 Dec 2007 17:33:03 +0000

author
Stu Tomlinson <nosnilmot@pidgin.im>
date
Sun, 02 Dec 2007 17:33:03 +0000
changeset 21843
e43ad3bbd45d
parent 21842
6584a84f71da
child 21844
da35d094499f

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;
 }

mercurial