From 5f47d4a9a37b2df05dcff270072d386838e87ebb Mon Sep 17 00:00:00 2001 From: mid Date: Sat, 16 Jun 2001 05:14:36 +0000 Subject: [PATCH] - Fri Jun 15 17:51:27 EDT 2001 - Make faimtest compile on RH7.1 (new gcc). - Add aim_conn_getsess() - Add aim_getconn_type_all() and aim_getconn_fd(). - Make aim_connrst() and aim_conn_getnext() static to conn.c. - Why does arcanejill think she is in EDT? Oh well. --- CHANGES | 7 ++++++ include/aim.h | 4 ++++ include/aim_internal.h | 2 -- src/conn.c | 49 ++++++++++++++++++++++++++++++++++++--- utils/faimtest/faimtest.c | 8 +++---- 5 files changed, 61 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index 2b73234..7cd54c6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,13 @@ No release numbers ------------------ + - Fri Jun 15 17:51:27 EDT 2001 + - Make faimtest compile on RH7.1 (new gcc). + - Add aim_conn_getsess() + - Add aim_getconn_type_all() and aim_getconn_fd(). + - Make aim_connrst() and aim_conn_getnext() static to conn.c. + - Why does arcanejill think she is in EDT? Oh well. + - Thu Jun 14 17:37:47 PDT 2001 - Rearrange aim_setprofile(). It will now let you _not_ send a profile, if you really want to (pass NULL). Note that this is quite different diff --git a/include/aim.h b/include/aim.h index b2fd37b..e7a2440 100644 --- a/include/aim.h +++ b/include/aim.h @@ -260,6 +260,7 @@ struct aim_conn_t { struct aim_rxcblist_t *handlerlist; faim_mutex_t active; /* lock around read/writes */ faim_mutex_t seqnum_lock; /* lock around ->seqnum changes */ + void *sessv; struct aim_conn_t *next; }; @@ -514,6 +515,7 @@ faim_export int aim_conn_setlatency(struct aim_conn_t *conn, int newval); faim_export int aim_conn_addhandler(struct aim_session_t *, struct aim_conn_t *conn, u_short family, u_short type, aim_rxcallback_t newhandler, u_short flags); faim_export int aim_clearhandlers(struct aim_conn_t *conn); +faim_export struct aim_session_t *aim_conn_getsess(struct aim_conn_t *conn); faim_export void aim_conn_close(struct aim_conn_t *deadconn); faim_export struct aim_conn_t *aim_newconn(struct aim_session_t *, int type, char *dest); faim_export int aim_conngetmaxfd(struct aim_session_t *); @@ -529,6 +531,8 @@ faim_export void aim_session_init(struct aim_session_t *, unsigned long flags, i faim_export void aim_session_kill(struct aim_session_t *); faim_export void aim_setupproxy(struct aim_session_t *sess, char *server, char *username, char *password); faim_export struct aim_conn_t *aim_getconn_type(struct aim_session_t *, int type); +faim_export struct aim_conn_t *aim_getconn_type_all(struct aim_session_t *, int type); +faim_export struct aim_conn_t *aim_getconn_fd(struct aim_session_t *, int fd); /* aim_misc.c */ diff --git a/include/aim_internal.h b/include/aim_internal.h index 975a702..fff1e52 100644 --- a/include/aim_internal.h +++ b/include/aim_internal.h @@ -83,8 +83,6 @@ faim_internal struct aim_snac_t *aim_remsnac(struct aim_session_t *, u_long id); faim_internal int aim_cleansnacs(struct aim_session_t *, int maxage); faim_internal int aim_putsnac(u_char *, int, int, int, u_long); -faim_internal void aim_connrst(struct aim_session_t *); -faim_internal struct aim_conn_t *aim_conn_getnext(struct aim_session_t *); faim_internal struct aim_conn_t *aim_cloneconn(struct aim_session_t *sess, struct aim_conn_t *src); faim_internal int aim_oft_buildheader(unsigned char *,struct aim_fileheader_t *); diff --git a/src/conn.c b/src/conn.c index 0b5644b..517cb0c 100644 --- a/src/conn.c +++ b/src/conn.c @@ -22,7 +22,7 @@ * Clears out the connection list and kills any connections left. * */ -faim_internal void aim_connrst(struct aim_session_t *sess) +static void aim_connrst(struct aim_session_t *sess) { faim_mutex_init(&sess->connlistlock); if (sess->connlist) { @@ -72,7 +72,7 @@ static void aim_conn_init(struct aim_conn_t *deadconn) * Allocate a new empty connection structure. * */ -faim_internal struct aim_conn_t *aim_conn_getnext(struct aim_session_t *sess) +static struct aim_conn_t *aim_conn_getnext(struct aim_session_t *sess) { struct aim_conn_t *newconn, *cur; @@ -191,6 +191,38 @@ faim_export struct aim_conn_t *aim_getconn_type(struct aim_session_t *sess, break; } faim_mutex_unlock(&sess->connlistlock); + + return cur; +} + +faim_export struct aim_conn_t *aim_getconn_type_all(struct aim_session_t *sess, + int type) +{ + struct aim_conn_t *cur; + + faim_mutex_lock(&sess->connlistlock); + for (cur = sess->connlist; cur; cur = cur->next) { + if (cur->type == type) + break; + } + faim_mutex_unlock(&sess->connlistlock); + + return cur; +} + +/* If you pass -1 for the fd, you'll get what you ask for. Gibberish. */ +faim_export struct aim_conn_t *aim_getconn_fd(struct aim_session_t *sess, + int fd) +{ + struct aim_conn_t *cur; + + faim_mutex_lock(&sess->connlistlock); + for (cur = sess->connlist; cur; cur = cur->next) { + if (cur->fd == fd) + break; + } + faim_mutex_unlock(&sess->connlistlock); + return cur; } @@ -393,6 +425,7 @@ faim_internal struct aim_conn_t *aim_cloneconn(struct aim_session_t *sess, conn->priv = src->priv; conn->lastactivity = src->lastactivity; conn->forcedlatency = src->forcedlatency; + conn->sessv = src->sessv; /* clone handler list */ for (cur = src->handlerlist; cur; cur = cur->next) { @@ -432,7 +465,8 @@ faim_export struct aim_conn_t *aim_newconn(struct aim_session_t *sess, return NULL; faim_mutex_lock(&connstruct->active); - + + connstruct->sessv = (void *)sess; connstruct->type = type; if (!dest) { /* just allocate a struct */ @@ -899,6 +933,15 @@ faim_export int aim_conn_completeconnect(struct aim_session_t *sess, struct aim_ return 0; } +faim_export struct aim_session_t *aim_conn_getsess(struct aim_conn_t *conn) +{ + + if (!conn) + return NULL; + + return (struct aim_session_t *)conn->sessv; +} + /* * aim_logoff() * diff --git a/utils/faimtest/faimtest.c b/utils/faimtest/faimtest.c index 89b9857..ee76337 100644 --- a/utils/faimtest/faimtest.c +++ b/utils/faimtest/faimtest.c @@ -552,11 +552,11 @@ static int faimtest_icbmparaminfo(struct aim_session_t *sess, struct command_rx_ va_list ap; va_start(ap, command); - maxchannel = va_arg(ap, unsigned short); + maxchannel = va_arg(ap, unsigned int); defflags = va_arg(ap, unsigned long); - maxicbmlen = va_arg(ap, unsigned short); - maxsenderwarn = va_arg(ap, unsigned short); - maxrecverwarn = va_arg(ap, unsigned short); + maxicbmlen = va_arg(ap, unsigned int); + maxsenderwarn = va_arg(ap, unsigned int); + maxrecverwarn = va_arg(ap, unsigned int); minmsginterval = va_arg(ap, unsigned long); va_end(ap); -- 2.45.1