faim_mutex_unlock(&conn->active);
aim_conn_close(conn);
return -1;
- }
+ }
hdrtype = aimutil_get16(hdr);
switch (hdrtype) {
snptr = (char *)hdr+38;
strncpy(priv->sn, snptr, MAXSNLEN);
- faimdprintf(sess, 2, "faim: OFT frame: %04x / %04x / %04x / %s\n", hdrtype, payloadlength, flags, snptr);
+ faimdprintf(sess, 2, "faim: OFT frame: %04x / %04x / %04x / %s\n", hdrtype, payloadlength, flags, priv->sn);
free(hdr);
hdr = NULL;
if (flags == 0x000e) {
faim_mutex_unlock(&conn->active);
if ( (userfunc = aim_callhandler(sess, conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING)) )
- return userfunc(sess, NULL, snptr);
+ return userfunc(sess, NULL, conn);
} else {
if ((flags == 0x0000) && payloadlength) {
faim_mutex_unlock(&conn->active);
msg[payloadlength] = 0x00;
- faimdprintf(sess, 2, "faim: directim: %s/%04x/%04x/%s\n", snptr, payloadlength, flags, msg);
+ faimdprintf(sess, 2, "faim: directim: %s/%04x/%04x/%s\n", priv->sn, payloadlength, flags, msg);
if ( (userfunc = aim_callhandler(sess, conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING)) )
- i = userfunc(sess, NULL, conn, snptr, msg);
+ i = userfunc(sess, NULL, conn, msg);
else {
- faimdprintf(sess, 0, "directim: %s/%04x/%04x/%s\n", snptr, payloadlength, flags, msg);
+ faimdprintf(sess, 0, "directim: %s/%04x/%04x/%s\n", priv->sn, payloadlength, flags, msg);
i = 1;
}
int i;
struct aim_fileheader_t *fh;
- fh = aim_oft_getfh(hdr);
+ if(!(fh = aim_oft_getfh(hdr)))
+ return -1;
free(hdr);
hdr = NULL;
break;
}
} /* switch */
+
if (hdr) {
faimdprintf(sess, 0, "hdr wasn't freed by a rendezvous switch case (hdrtype: %0x04x)!\n", hdrtype);
free(hdr);