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