X-Git-Url: http://andersk.mit.edu/gitweb/libfaim.git/blobdiff_plain/96f8b1edd2c6bb991cb4fec0a5bef6570ceb502f..355982c549cb58e2188751e073997e89785fbd49:/aim_im.c diff --git a/aim_im.c b/aim_im.c index f316192..216d2c0 100644 --- a/aim_im.c +++ b/aim_im.c @@ -17,9 +17,9 @@ * when the message is received (of type 0x0004/0x000c) * */ -u_long aim_send_im(struct aim_session_t *sess, - struct aim_conn_t *conn, - char *destsn, u_int flags, char *msg) +faim_export unsigned long aim_send_im(struct aim_session_t *sess, + struct aim_conn_t *conn, + char *destsn, u_int flags, char *msg) { int curbyte,i; @@ -47,7 +47,7 @@ u_long aim_send_im(struct aim_session_t *sess, * */ for (i=0;i<8;i++) - curbyte += aimutil_put8(newpacket->data+curbyte, (u_char) random()); + curbyte += aimutil_put8(newpacket->data+curbyte, (u_char) rand()); /* * Channel ID @@ -139,8 +139,8 @@ u_long aim_send_im(struct aim_session_t *sess, return (sess->snac_nextid++); } -int aim_parse_outgoing_im_middle(struct aim_session_t *sess, - struct command_rx_struct *command) +faim_internal int aim_parse_outgoing_im_middle(struct aim_session_t *sess, + struct command_rx_struct *command) { unsigned int i = 0, z; rxcallback_t userfunc = NULL; @@ -167,7 +167,7 @@ int aim_parse_outgoing_im_middle(struct aim_session_t *sess, return 1; } - strncpy(sn, command->data+i+1, (int) *(command->data+i)); + strncpy(sn, (char *) command->data+i+1, (int) *(command->data+i)); i += 1 + (int) *(command->data+i); tlvlist = aim_readtlvchain(command->data+i, command->commandlen-i); @@ -180,7 +180,7 @@ int aim_parse_outgoing_im_middle(struct aim_session_t *sess, if (aim_gettlv(tlvlist, 0x0002, 1)) { int j = 0; - msgblock = aim_gettlv_str(tlvlist, 0x0002, 1); + msgblock = (unsigned char *)aim_gettlv_str(tlvlist, 0x0002, 1); /* no, this really is correct. I'm not high or anything either. */ j += 2; @@ -222,8 +222,8 @@ int aim_parse_outgoing_im_middle(struct aim_session_t *sess, * room we're invited to, but obviously can't attend... * */ -int aim_parse_incoming_im_middle(struct aim_session_t *sess, - struct command_rx_struct *command) +faim_internal int aim_parse_incoming_im_middle(struct aim_session_t *sess, + struct command_rx_struct *command) { u_int i = 0,z; rxcallback_t userfunc = NULL; @@ -397,7 +397,6 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, { struct aim_tlv_t *block1; struct aim_tlvlist_t *list2; - struct aim_tlv_t *tmptlv; unsigned short reqclass = 0; unsigned short status = 0; @@ -506,13 +505,17 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, /* * Call client. */ +#if 0 userfunc = aim_callhandler(command->conn, 0x0004, 0x0007); if (userfunc || (i = 0)) i = userfunc(sess, command, channel, reqclass, - &userinfo); + &userinfo, + ip, + cookie); +#endif } else if (reqclass & AIM_CAPS_VOICE) { struct aim_msgcookie_t *cachedcook; @@ -542,7 +545,7 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, char ip[30]; struct aim_directim_priv *priv; - memset(ip, 0, sizeof(ip)); + memset(ip, 0, 30); if (aim_gettlv(list2, 0x0003, 1) && aim_gettlv(list2, 0x0005, 1)) { struct aim_tlv_t *iptlv, *porttlv; @@ -550,7 +553,7 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, iptlv = aim_gettlv(list2, 0x0003, 1); porttlv = aim_gettlv(list2, 0x0005, 1); - snprintf(ip, sizeof(ip)-1, "%d.%d.%d.%d:%d", + snprintf(ip, 30, "%d.%d.%d.%d:%d", aimutil_get8(iptlv->value+0), aimutil_get8(iptlv->value+1), aimutil_get8(iptlv->value+2), @@ -618,16 +621,13 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, free(lang); } else if (reqclass & AIM_CAPS_GETFILE) { char ip[30]; - char *desc = NULL; struct aim_msgcookie_t *cachedcook; - struct aim_filetransfer_priv *ft; struct aim_tlv_t *miscinfo; - struct aim_conn_t *newconn; if (!(cachedcook = calloc(1, sizeof(struct aim_msgcookie_t)))) return 0; - memset(ip, 0, sizeof(ip)); + memset(ip, 0, 30); if (!(miscinfo = aim_gettlv(list2, 0x2711, 1))) { free(cachedcook); @@ -642,7 +642,7 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, return 0; } - snprintf(ip, sizeof(ip)-1, "%d.%d.%d.%d:%d", + snprintf(ip, 30, "%d.%d.%d.%d:%d", aimutil_get8(iptlv->value+0), aimutil_get8(iptlv->value+1), aimutil_get8(iptlv->value+2), @@ -652,40 +652,6 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, printf("faim: rend: file get request from %s (%s)\n", userinfo.sn, ip); -#if 0 /* XXX finish this */ - newconn = aim_newconn(sess, AIM_CONN_TYPE_RENDEZVOUS, ip); - if (!newconn || (newconn->fd == -1)) { - printf("could not connect to %s\n", ip); - perror("aim_newconn"); - aim_conn_kill(sess, &newconn); - } else { - struct aim_filetransfer_priv *priv; - priv = (struct aim_filetransfer_priv *)calloc(1, sizeof(struct aim_filetransfer_priv)); - memcpy(priv->cookie, cookie, 8); - strncpy(priv->sn, userinfo.sn, MAXSNLEN); - newconn->priv = priv; - printf("faim: connected to peer (fd = %d)\n", newconn->fd); - } - - memcpy(cachedcook->cookie, cookie, 8); - - ft = malloc(sizeof(struct aim_filetransfer_priv)); - ft->state = 1; - strncpy(ft->sn, userinfo.sn, sizeof(ft->sn)); - strncpy(ft->ip, ip, sizeof(ft->ip)); -#if 0 - strncpy(ft->fh.name, miscinfo->value+8, sizeof(ft->fh.name)); -#endif - cachedcook->type = AIM_COOKIETYPE_OFTGET; - cachedcook->data = ft; - - if (aim_cachecookie(sess, cachedcook) != 0) - printf("faim: ERROR caching message cookie\n"); - - aim_accepttransfer(sess, command->conn, newconn, ft->sn, cookie, AIM_CAPS_GETFILE); - - free(desc); -#endif /* * Call client. */ @@ -695,7 +661,9 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, command, channel, reqclass, - &userinfo); + &userinfo, + ip, + cookie); } else if (reqclass & AIM_CAPS_SENDFILE) { #if 0 @@ -785,11 +753,11 @@ int aim_parse_incoming_im_middle(struct aim_session_t *sess, * AIM_TRANSFER_DENY_NOTACCEPTING -- "client is not accepting transfers" * */ -u_long aim_denytransfer(struct aim_session_t *sess, - struct aim_conn_t *conn, - char *sender, - char *cookie, - unsigned short code) +faim_export unsigned long aim_denytransfer(struct aim_session_t *sess, + struct aim_conn_t *conn, + char *sender, + char *cookie, + unsigned short code) { struct command_tx_struct *newpacket; int curbyte, i; @@ -820,8 +788,8 @@ u_long aim_denytransfer(struct aim_session_t *sess, * idea. * */ -u_long aim_seticbmparam(struct aim_session_t *sess, - struct aim_conn_t *conn) +faim_export unsigned long aim_seticbmparam(struct aim_session_t *sess, + struct aim_conn_t *conn) { struct command_tx_struct *newpacket; int curbyte; @@ -849,8 +817,8 @@ u_long aim_seticbmparam(struct aim_session_t *sess, return (sess->snac_nextid++); } -int aim_parse_msgerror_middle(struct aim_session_t *sess, - struct command_rx_struct *command) +faim_internal int aim_parse_msgerror_middle(struct aim_session_t *sess, + struct command_rx_struct *command) { u_long snacid = 0x000000000; struct aim_snac_t *snac = NULL; @@ -898,8 +866,8 @@ int aim_parse_msgerror_middle(struct aim_session_t *sess, } -int aim_parse_missedcall(struct aim_session_t *sess, - struct command_rx_struct *command) +faim_internal int aim_parse_missedcall(struct aim_session_t *sess, + struct command_rx_struct *command) { int i, ret = 1; rxcallback_t userfunc = NULL;