-struct aim_directim_priv {
- unsigned char cookie[8];
- char sn[MAXSNLEN+1];
-};
-
-int aim_send_im_direct(struct aim_session_t *sess,
- struct aim_conn_t *conn,
- char *msg)
-{
- struct command_tx_struct *newpacket;
- struct aim_directim_priv *priv = NULL;
- int i;
-
- if (strlen(msg) >= MAXMSGLEN)
- return -1;
-
- if (!sess || !conn || (conn->type != AIM_CONN_TYPE_RENDEZVOUS) || !conn->priv) {
- printf("faim: directim: invalid arguments\n");
- return -1;
- }
-
- if (!(newpacket = aim_tx_new(AIM_FRAMETYPE_OFT, 0x0001, conn, strlen(msg)))) {
- printf("faim: directim: tx_new failed\n");
- return -1;
- }
-
- newpacket->lock = 1; /* lock struct */
-
- priv = (struct aim_directim_priv *)conn->priv;
-
- newpacket->hdr.oft.hdr2len = 0x44;
-
- if (!(newpacket->hdr.oft.hdr2 = malloc(newpacket->hdr.oft.hdr2len))) {
- free(newpacket);
- return -1;
- }
-
- i = 0;
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0006);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
-
- i += aimutil_putstr(newpacket->hdr.oft.hdr2+i, priv->cookie, 8);
-
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
-
- i += aimutil_put32(newpacket->hdr.oft.hdr2+i, strlen(msg));
-
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
-
- i += aimutil_putstr(newpacket->hdr.oft.hdr2+i, sess->logininfo.screen_name, strlen(sess->logininfo.screen_name));
-
- i = 52;
- i += aimutil_put8(newpacket->hdr.oft.hdr2+i, 0x00);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
- i += aimutil_put16(newpacket->hdr.oft.hdr2+i, 0x0000);
-
- memcpy(newpacket->data, msg, strlen(msg));
-
- newpacket->lock = 0;
-
- aim_tx_enqueue(sess, newpacket);
-
- return 0;
-}
-
-int aim_parse_outgoing_im_middle(struct aim_session_t *sess,
- struct command_rx_struct *command)