comparison libfaim/ft.c @ 1593:ec31e23aadc7

[gaim-migrate @ 1603] libfaim updates and a bug fix for bad password. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 16 Mar 2001 14:29:54 +0000
parents 001a79aec218
children 109cacf1ff97
comparison
equal deleted inserted replaced
1592:41cecde078c1 1593:ec31e23aadc7
996 faimdprintf(sess, 2,"faim: rend: read2 error on %d (%d)\n", conn->fd, hdrlen); 996 faimdprintf(sess, 2,"faim: rend: read2 error on %d (%d)\n", conn->fd, hdrlen);
997 free(hdr); 997 free(hdr);
998 faim_mutex_unlock(&conn->active); 998 faim_mutex_unlock(&conn->active);
999 aim_conn_close(conn); 999 aim_conn_close(conn);
1000 return -1; 1000 return -1;
1001 } 1001 }
1002 hdrtype = aimutil_get16(hdr); 1002 hdrtype = aimutil_get16(hdr);
1003 1003
1004 switch (hdrtype) { 1004 switch (hdrtype) {
1005 case 0x0001: { /* directim */ 1005 case 0x0001: { /* directim */
1006 int payloadlength = 0; 1006 int payloadlength = 0;
1017 payloadlength = aimutil_get32(hdr+22); 1017 payloadlength = aimutil_get32(hdr+22);
1018 flags = aimutil_get16(hdr+32); 1018 flags = aimutil_get16(hdr+32);
1019 snptr = (char *)hdr+38; 1019 snptr = (char *)hdr+38;
1020 strncpy(priv->sn, snptr, MAXSNLEN); 1020 strncpy(priv->sn, snptr, MAXSNLEN);
1021 1021
1022 faimdprintf(sess, 2, "faim: OFT frame: %04x / %04x / %04x / %s\n", hdrtype, payloadlength, flags, snptr); 1022 faimdprintf(sess, 2, "faim: OFT frame: %04x / %04x / %04x / %s\n", hdrtype, payloadlength, flags, priv->sn);
1023 1023
1024 free(hdr); 1024 free(hdr);
1025 hdr = NULL; 1025 hdr = NULL;
1026 1026
1027 if (flags == 0x000e) { 1027 if (flags == 0x000e) {
1028 faim_mutex_unlock(&conn->active); 1028 faim_mutex_unlock(&conn->active);
1029 if ( (userfunc = aim_callhandler(sess, conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING)) ) 1029 if ( (userfunc = aim_callhandler(sess, conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING)) )
1030 return userfunc(sess, NULL, snptr); 1030 return userfunc(sess, NULL, conn);
1031 } else { 1031 } else {
1032 1032
1033 if ((flags == 0x0000) && payloadlength) { 1033 if ((flags == 0x0000) && payloadlength) {
1034 unsigned char *msg; 1034 unsigned char *msg;
1035 1035
1047 return -1; 1047 return -1;
1048 } 1048 }
1049 1049
1050 faim_mutex_unlock(&conn->active); 1050 faim_mutex_unlock(&conn->active);
1051 msg[payloadlength] = 0x00; 1051 msg[payloadlength] = 0x00;
1052 faimdprintf(sess, 2, "faim: directim: %s/%04x/%04x/%s\n", snptr, payloadlength, flags, msg); 1052 faimdprintf(sess, 2, "faim: directim: %s/%04x/%04x/%s\n", priv->sn, payloadlength, flags, msg);
1053 1053
1054 if ( (userfunc = aim_callhandler(sess, conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING)) ) 1054 if ( (userfunc = aim_callhandler(sess, conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING)) )
1055 i = userfunc(sess, NULL, conn, snptr, msg); 1055 i = userfunc(sess, NULL, conn, msg);
1056 else { 1056 else {
1057 faimdprintf(sess, 0, "directim: %s/%04x/%04x/%s\n", snptr, payloadlength, flags, msg); 1057 faimdprintf(sess, 0, "directim: %s/%04x/%04x/%s\n", priv->sn, payloadlength, flags, msg);
1058 i = 1; 1058 i = 1;
1059 } 1059 }
1060 1060
1061 free(msg); 1061 free(msg);
1062 1062
1346 } 1346 }
1347 case 0x0204: { /* get file: finished. close it up */ 1347 case 0x0204: { /* get file: finished. close it up */
1348 int i; 1348 int i;
1349 struct aim_fileheader_t *fh; 1349 struct aim_fileheader_t *fh;
1350 1350
1351 fh = aim_oft_getfh(hdr); 1351 if(!(fh = aim_oft_getfh(hdr)))
1352 return -1;
1352 1353
1353 free(hdr); 1354 free(hdr);
1354 hdr = NULL; 1355 hdr = NULL;
1355 1356
1356 faim_mutex_unlock(&conn->active); 1357 faim_mutex_unlock(&conn->active);
1376 faimdprintf(sess, 2,"faim: OFT frame: uknown type %04x\n", hdrtype); 1377 faimdprintf(sess, 2,"faim: OFT frame: uknown type %04x\n", hdrtype);
1377 faim_mutex_unlock(&conn->active); 1378 faim_mutex_unlock(&conn->active);
1378 break; 1379 break;
1379 } 1380 }
1380 } /* switch */ 1381 } /* switch */
1382
1381 if (hdr) { 1383 if (hdr) {
1382 faimdprintf(sess, 0, "hdr wasn't freed by a rendezvous switch case (hdrtype: %0x04x)!\n", hdrtype); 1384 faimdprintf(sess, 0, "hdr wasn't freed by a rendezvous switch case (hdrtype: %0x04x)!\n", hdrtype);
1383 free(hdr); 1385 free(hdr);
1384 hdr = NULL; 1386 hdr = NULL;
1385 } 1387 }