*
*/
+#define FAIM_INTERNAL
#include <faim/aim.h>
#ifndef _WIN32
* type found.
*
*/
-faim_internal struct aim_conn_t *aim_getconn_type(struct aim_session_t *sess,
- int type)
+faim_export struct aim_conn_t *aim_getconn_type(struct aim_session_t *sess,
+ int type)
{
struct aim_conn_t *cur;
return fd;
}
+faim_internal struct aim_conn_t *aim_cloneconn(struct aim_session_t *sess,
+ struct aim_conn_t *src)
+{
+ struct aim_conn_t *conn;
+ struct aim_rxcblist_t *cur;
+
+ if (!(conn = aim_conn_getnext(sess)))
+ return NULL;
+
+
+ faim_mutex_lock(&conn->active);
+
+ conn->fd = src->fd;
+ conn->type = src->type;
+ conn->subtype = src->subtype;
+ conn->seqnum = src->seqnum;
+ conn->priv = src->priv;
+ conn->lastactivity = src->lastactivity;
+ conn->forcedlatency = src->forcedlatency;
+
+ /* clone handler list */
+ for (cur = src->handlerlist; cur; cur = cur->next) {
+ aim_conn_addhandler(sess, conn, cur->family, cur->type,
+ cur->handler, cur->flags);
+ }
+
+ faim_mutex_unlock(&conn->active);
+
+ return conn;
+}
+
/**
* aim_newconn - Open a new connection
* @sess: Session to create connection in
return j;
}
-/**
- * aim_countconn - Return the number of open connections in the session
- * @sess: Session to look at
- *
- * Returns the number of number connections in @sess.
- *
- */
-static int aim_countconn(struct aim_session_t *sess)
-{
- int cnt = 0;
- struct aim_conn_t *cur;
-
- faim_mutex_lock(&sess->connlistlock);
- for (cur = sess->connlist; cur; cur = cur->next)
- cnt++;
- faim_mutex_unlock(&sess->connlistlock);
-
- return cnt;
-}
-
/**
* aim_conn_in_sess - Predicate to test the precense of a connection in a sess
* @sess: Session to look in