summaryrefslogtreecommitdiff
path: root/libpurple/protocols/msn/servconn.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpurple/protocols/msn/servconn.c')
-rw-r--r--libpurple/protocols/msn/servconn.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/libpurple/protocols/msn/servconn.c b/libpurple/protocols/msn/servconn.c
index 96a164f391..a3bc5996f7 100644
--- a/libpurple/protocols/msn/servconn.c
+++ b/libpurple/protocols/msn/servconn.c
@@ -301,7 +301,8 @@ static void
servconn_write_cb(gpointer data, gint source, PurpleInputCondition cond)
{
MsnServConn *servconn = data;
- int ret, writelen;
+ gssize ret;
+ int writelen;
writelen = purple_circ_buffer_get_max_read(servconn->tx_buf);
@@ -385,7 +386,8 @@ read_cb(gpointer data, gint source, PurpleInputCondition cond)
MsnSession *session;
char buf[MSN_BUF_LEN];
char *cur, *end, *old_rx_buf;
- int len, cur_len;
+ gssize len;
+ int cur_len;
servconn = data;
session = servconn->session;
@@ -399,7 +401,7 @@ read_cb(gpointer data, gint source, PurpleInputCondition cond)
} else if (len <= 0) {
purple_debug_error("msn", "servconn read error,"
- "len: %d, errno: %d, error: %s\n",
+ "len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n",
len, errno, g_strerror(errno));
msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);
@@ -555,6 +557,9 @@ create_listener(int port)
flags = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
+#ifndef _WIN32
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
+#endif
return fd;
}