]> andersk Git - libfaim.git/blobdiff - aim_chat.c
- Tue Jun 6 01:36:48 UTC 2000
[libfaim.git] / aim_chat.c
index 85cf21564f70b0af8e636ca4be5f92eadf27188c..0543ade2b06f0c56359fc020cbb1eccd2f72032b 100644 (file)
@@ -19,20 +19,18 @@ char *aim_chat_getname(struct aim_conn_t *conn)
 
 struct aim_conn_t *aim_chat_getconn(struct aim_session_t *sess, char *name)
 {
-  int i;
+  struct aim_conn_t *cur;
+  
+  faim_mutex_lock(&sess->connlistlock);
+  for (cur = sess->connlist; cur; cur = cur->next) {
+    if (cur->type != AIM_CONN_TYPE_CHAT)
+      continue;
+    if (strcmp((char *)cur->priv, name) == 0)
+      break;
+  }
+  faim_mutex_unlock(&sess->connlistlock);
 
-  for (i=0;i<AIM_CONN_MAX;i++)
-    {
-      if (sess->conns[i].type == AIM_CONN_TYPE_CHAT)
-       {
-         if (sess->conns[i].priv)
-           if (!strcmp((char *)sess->conns[i].priv, name))
-             {
-               return &sess->conns[i];
-             }
-       }
-    }
-  return NULL;
+  return cur;
 }
 
 int aim_chat_attachname(struct aim_conn_t *conn, char *roomname)
@@ -542,21 +540,14 @@ u_long aim_chat_clientready(struct aim_session_t *sess,
 
 int aim_chat_leaveroom(struct aim_session_t *sess, char *name)
 {
-  int i;
+  struct aim_conn_t *conn;
 
-  for (i=0;i<AIM_CONN_MAX;i++)
-    {
-      if (sess->conns[i].type == AIM_CONN_TYPE_CHAT)
-       {
-         if (sess->conns[i].priv)
-           if (!strcmp((char *)sess->conns[i].priv, name))
-             {
-               aim_conn_close(&sess->conns[i]);
-               return 0;
-             }
-       }
-    }
-  return -1;
+  if ((conn = aim_chat_getconn(sess, name)))
+    aim_conn_kill(sess, &conn);
+
+  if (!conn)
+    return -1;
+  return 0;
 }
 
 /*
This page took 0.047959 seconds and 4 git commands to generate.