diff libpurple/protocols/msn/servconn.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/servconn.c	Sat Oct 13 21:55:41 2007 +0000
+++ b/libpurple/protocols/msn/servconn.c	Sun Oct 14 09:57:32 2007 +0000
@@ -480,6 +480,7 @@
 create_listener(int port)
 {
 	int fd;
+	int flags;
 	const int on = 1;
 
 #if 0
@@ -555,7 +556,8 @@
 		return -1;
 	}
 
-	fcntl(fd, F_SETFL, O_NONBLOCK);
+	flags = fcntl(fd, F_GETFL);
+	fcntl(fd, F_SETFL, flags | O_NONBLOCK);
 
 	return fd;
 }