From: mid Date: Fri, 1 Dec 2000 23:51:45 +0000 (+0000) Subject: - Fri Dec 1 23:48:38 UTC 2000 X-Git-Tag: rel_0_99_2~92 X-Git-Url: http://andersk.mit.edu/gitweb/libfaim.git/commitdiff_plain/9f20a4e3d25b96996f9d07ee64dffc978ef0b769 - Fri Dec 1 23:48:38 UTC 2000 - Store exchange along with room name in the great chat hack --- diff --git a/CHANGES b/CHANGES index 83d4e92..06efdeb 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ No release numbers ------------------ + - Fri Dec 1 23:48:38 UTC 2000 + - Store exchange along with room name in the great chat hack + - Fri Dec 1 22:25:56 UTC 2000 - Fix numerous tiny (but sometimes catastrophic) bugs dealing with connection death (particularly with chat connections) diff --git a/aim_chat.c b/aim_chat.c index 6ad5d15..85331ed 100644 --- a/aim_chat.c +++ b/aim_chat.c @@ -155,10 +155,8 @@ faim_export unsigned long aim_chat_join(struct aim_session_t *sess, i+= aimutil_put16(newpacket->data+i, 2+1+strlen(roomname)+2); i+= aimutil_put16(newpacket->data+i, exchange); i+= aimutil_put8(newpacket->data+i, strlen(roomname)); - memcpy(newpacket->data+i, roomname, strlen(roomname)); - i+= strlen(roomname); - //i+= aimutil_putstr(newpacket->data+i, roomname, strlen(roomname)); - i+= aimutil_put16(newpacket->data+i, 0x0000); + i+= aimutil_putstr(newpacket->data+i, roomname, strlen(roomname)); + i+= aimutil_put16(newpacket->data+i, 0x0000); /* instance? */ /* * Chat hack. @@ -169,8 +167,8 @@ faim_export unsigned long aim_chat_join(struct aim_session_t *sess, * redirect! * */ - sess->pendingjoin = (char *)malloc(strlen(roomname)+1); - strcpy(sess->pendingjoin, roomname); + sess->pendingjoin = strdup(roomname); + sess->pendingjoinexchange = exchange; newpacket->lock = 0; aim_tx_enqueue(sess, newpacket); diff --git a/aim_conn.c b/aim_conn.c index 6914f0e..836c0d4 100644 --- a/aim_conn.c +++ b/aim_conn.c @@ -709,7 +709,9 @@ faim_export void aim_session_init(struct aim_session_t *sess, unsigned long flag sess->queue_outgoing = NULL; sess->queue_incoming = NULL; sess->pendingjoin = NULL; + sess->pendingjoinexchange = 0; aim_initsnachash(sess); + sess->msgcookies = NULL; sess->snac_nextid = 0x00000001; sess->flags = 0; diff --git a/aim_msgcookie.c b/aim_msgcookie.c index c9cb58a..fb457ee 100644 --- a/aim_msgcookie.c +++ b/aim_msgcookie.c @@ -123,7 +123,7 @@ faim_export int aim_purgecookies(struct aim_session_t *sess, int maxage) if (cur->addtime > (time(NULL) - maxage)) { struct aim_msgcookie_t *remed = NULL; -#if DEBUG > 1 +#if 1 printf("aimmsgcookie: WARNING purged obsolete message cookie %x%x%x%x %x%x%x%x\n", cur->cookie[0], cur->cookie[1], cur->cookie[2], cur->cookie[3], cur->cookie[4], cur->cookie[5], cur->cookie[6], cur->cookie[7]); diff --git a/aim_rxhandlers.c b/aim_rxhandlers.c index bc67cbf..97fe655 100644 --- a/aim_rxhandlers.c +++ b/aim_rxhandlers.c @@ -781,9 +781,10 @@ faim_internal int aim_handleredirect_middle(struct aim_session_t *sess, */ userfunc = aim_callhandler(command->conn, 0x0001, 0x0005); if (userfunc) - ret = userfunc(sess, command, serviceid, ip, cookie, sess->pendingjoin); + ret = userfunc(sess, command, serviceid, ip, cookie, sess->pendingjoin, (int)sess->pendingjoinexchange); free(sess->pendingjoin); sess->pendingjoin = NULL; + sess->pendingjoinexchange = 0; } else { diff --git a/faim/aim.h b/faim/aim.h index e0ed0b3..8e345a4 100644 --- a/faim/aim.h +++ b/faim/aim.h @@ -338,6 +338,7 @@ struct aim_session_t { * request and the resulting redirect.) */ char *pendingjoin; + unsigned short pendingjoinexchange; /* * Outstanding snac handling diff --git a/utils/faimtest/faimtest.c b/utils/faimtest/faimtest.c index 687ca7c..bd2c06a 100644 --- a/utils/faimtest/faimtest.c +++ b/utils/faimtest/faimtest.c @@ -509,9 +509,11 @@ int faimtest_handleredirect(struct aim_session_t *sess, struct command_rx_struct case 0x000e: /* Chat */ { char *roomname = NULL; + int exchange; struct aim_conn_t *tstconn = NULL; roomname = va_arg(ap, char *); + exchange = va_arg(ap, int); tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, ip); if ( (tstconn==NULL) || (tstconn->status & AIM_CONN_STATUS_RESOLVERR)) @@ -520,7 +522,7 @@ int faimtest_handleredirect(struct aim_session_t *sess, struct command_rx_struct if (tstconn) aim_conn_kill(sess, &tstconn); return 1; } - printf("faimtest: chat: connected\n"); + printf("faimtest: chat: connected to %s on exchange %d\n", roomname, exchange); /* * We must do this to attach the stored name to the connection!