]> andersk Git - libfaim.git/blobdiff - src/conn.c
Fine then.
[libfaim.git] / src / conn.c
index e296f9fb4ce0d92b9349a7e669a2a7fe0456224f..0b5644b48f6ca97c9abeb15a5dc029a712cc6ca5 100644 (file)
@@ -112,6 +112,8 @@ faim_export void aim_conn_kill(struct aim_session_t *sess, struct aim_conn_t **d
   if (!deadconn || !*deadconn) 
     return;
 
+  aim_tx_cleanqueue(sess, *deadconn);
+
   faim_mutex_lock(&sess->connlistlock);
   if (sess->connlist == NULL)
     ;
@@ -540,7 +542,8 @@ faim_export int aim_conn_in_sess(struct aim_session_t *sess, struct aim_conn_t *
  *
  */ 
 faim_export struct aim_conn_t *aim_select(struct aim_session_t *sess,
-                                         struct timeval *timeout, int *status)
+                                         struct timeval *timeout, 
+                                         int *status)
 {
   struct aim_conn_t *cur;
   fd_set fds, wfds;
@@ -568,6 +571,7 @@ faim_export struct aim_conn_t *aim_select(struct aim_session_t *sess,
       return cur;
     } else if (cur->status & AIM_CONN_STATUS_INPROGRESS) {
       FD_SET(cur->fd, &wfds);
+      
       haveconnecting++;
     }
     FD_SET(cur->fd, &fds);
@@ -718,6 +722,11 @@ faim_export void aim_setupproxy(struct aim_session_t *sess, char *server, char *
   return;
 }
 
+static void defaultdebugcb(struct aim_session_t *sess, int level, const char *format, va_list va)
+{
+  vfprintf(stderr, format, va);
+}
+
 /**
  * aim_session_init - Initializes a session structure
  * @sess: Session to initialize
@@ -743,8 +752,10 @@ faim_export void aim_session_init(struct aim_session_t *sess, unsigned long flag
   sess->snac_nextid = 0x00000001;
 
   sess->flags = 0;
-  sess->debug = 0;
-  sess->debugcb = NULL;
+  sess->debug = debuglevel;
+  sess->debugcb = defaultdebugcb;
+
+  sess->modlistv = NULL;
 
   /*
    * Default to SNAC login unless XORLOGIN is explicitly set.
@@ -759,6 +770,39 @@ faim_export void aim_session_init(struct aim_session_t *sess, unsigned long flag
    */
   aim_tx_setenqueue(sess, AIM_TX_QUEUED, NULL);
 
+
+  /*
+   * Register all the modules for this session...
+   */
+  aim__registermodule(sess, misc_modfirst); /* load the catch-all first */
+  aim__registermodule(sess, buddylist_modfirst);
+  aim__registermodule(sess, admin_modfirst);
+  aim__registermodule(sess, bos_modfirst);
+  aim__registermodule(sess, search_modfirst);
+  aim__registermodule(sess, stats_modfirst);
+  aim__registermodule(sess, auth_modfirst);
+  aim__registermodule(sess, msg_modfirst);
+  aim__registermodule(sess, chatnav_modfirst);
+  aim__registermodule(sess, chat_modfirst);
+  aim__registermodule(sess, locate_modfirst);
+  aim__registermodule(sess, general_modfirst);
+
+  return;
+}
+
+/**
+ * aim_session_kill - Deallocate a session
+ * @sess: Session to kill
+ *
+ *
+ */
+faim_export void aim_session_kill(struct aim_session_t *sess)
+{
+
+  aim_logoff(sess);
+
+  aim__shutdownmodules(sess);
+
   return;
 }
 
@@ -804,7 +848,7 @@ faim_export int aim_conn_completeconnect(struct aim_session_t *sess, struct aim_
   fd_set fds, wfds;
   struct timeval tv;
   int res, error = ETIMEDOUT;
-  rxcallback_t userfunc;
+  aim_rxcallback_t userfunc;
 
   if (!conn || (conn->fd == -1))
     return -1;
This page took 0.047685 seconds and 4 git commands to generate.