if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
ret = userfunc(sess, rx, channel, sn, reason);
+ free(ck);
+ free(sn);
+
return ret;
}
fu16_t type;
fu8_t snlen, *ck;
char *sn;
+ int ret = 0;
ck = aimbs_getraw(bs, 8);
type = aimbs_get16(bs);
sn = aimbs_getstr(bs, snlen);
if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
- return userfunc(sess, rx, type, sn);
+ ret = userfunc(sess, rx, type, sn);
free(sn);
free(ck);
- return 0;
+ return ret;
}
static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
aim_rxcallback_t userfunc;
int vercount;
fu8_t *versions;
+ int ret = 0;
vercount = aim_bstream_empty(bs)/4;
versions = aimbs_getraw(bs, aim_bstream_empty(bs));
if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
- return userfunc(sess, rx, vercount, versions);
+ ret = userfunc(sess, rx, vercount, versions);
free(versions);
- return 0;
+ return ret;
}
/*