- 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.
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
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;
};
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 *);
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 */
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 *);
* 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) {
* 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;
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;
}
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) {
return NULL;
faim_mutex_lock(&connstruct->active);
-
+
+ connstruct->sessv = (void *)sess;
connstruct->type = type;
if (!dest) { /* just allocate a struct */
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()
*
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);