diff plugins/icq/socketmanager.c @ 1498:0ef6603d986e

[gaim-migrate @ 1508] updating icqlib committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 22 Feb 2001 23:07:34 +0000
parents 4c510ca3563f
children e2f256502345
line wrap: on
line diff
--- a/plugins/icq/socketmanager.c	Thu Feb 22 22:50:03 2001 +0000
+++ b/plugins/icq/socketmanager.c	Thu Feb 22 23:07:34 2001 +0000
@@ -1,7 +1,7 @@
 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 
 /*
-  $Id: socketmanager.c 1442 2001-01-28 01:52:27Z warmenhoven $
+  $Id: socketmanager.c 1508 2001-02-22 23:07:34Z warmenhoven $
 */
 
 #include "socketmanager.h"
@@ -47,6 +47,8 @@
 fd_set icq_FdSets[ICQ_SOCKET_MAX];
 int icq_MaxSocket;
 
+void (*icq_SocketNotify)(int socket, int type, int status);
+
 /**
  * Creates a new socket using the operating system's socket creation
  * facitily.
@@ -143,7 +145,6 @@
     s->handlers[type] = handler;
     if (icq_SocketNotify)
       (*icq_SocketNotify)(socket, type, handler ? 1 : 0);
-    icq_SocketBuildFdSets();
   }
 }
 
@@ -170,11 +171,11 @@
   int i;
 
   for (i=0; i<ICQ_SOCKET_MAX; i++)
-    if (s->handlers[i])
-      FD_SET(s->socket, &icq_FdSets[i]);
-
-  if (s->socket > icq_MaxSocket)
-    icq_MaxSocket = s->socket;
+    if (s->handlers[i]) {
+      FD_SET(s->socket, &(icq_FdSets[i]));
+      if (s->socket > icq_MaxSocket)
+        icq_MaxSocket = s->socket;
+    }
 
   return 0; /* traverse entire list */
 }
@@ -182,10 +183,10 @@
 void icq_SocketBuildFdSets()
 {
   int i;
-  
+
   /* clear fdsets */
   for (i=0; i<ICQ_SOCKET_MAX; i++)
-    FD_ZERO(&icq_FdSets[i]);
+    FD_ZERO(&(icq_FdSets[i]));
 
   icq_MaxSocket = 0;
   
@@ -199,8 +200,9 @@
   int i;
 
   for (i=0; i<ICQ_SOCKET_MAX; i++)
-    if (FD_ISSET(s->socket, &icq_FdSets[i]))
+    if (FD_ISSET(s->socket, &(icq_FdSets[i]))) {
       icq_SocketReady(s, i);
+    }
 
   return 0; /* traverse entire list */
 }
@@ -211,10 +213,13 @@
   int max_socket = 0;
   int i;
 
-  tv.tv_sec = 0; tv.tv_usec = 0;
+  icq_SocketBuildFdSets();
   
+  tv.tv_sec = 0; tv.tv_usec = 0;
+    
   /* determine which sockets require maintenance */
-  select(icq_MaxSocket+1, &icq_FdSets[0], &icq_FdSets[1], NULL, &tv);
+  select(icq_MaxSocket+1, &(icq_FdSets[ICQ_SOCKET_READ]),
+    &(icq_FdSets[ICQ_SOCKET_WRITE]), NULL, &tv);
 
   /* handle ready sockets */
   (void)list_traverse(icq_SocketList, _icq_SocketHandleReady);