| 120 fu32_t ouruin; |
120 fu32_t ouruin; |
| 121 fu16_t cmdlen, cmd, reqid; |
121 fu16_t cmdlen, cmd, reqid; |
| 122 |
122 |
| 123 if (!(tl = aim_readtlvchain(bs)) || !(datatlv = aim_gettlv(tl, 0x0001, 1))) { |
123 if (!(tl = aim_readtlvchain(bs)) || !(datatlv = aim_gettlv(tl, 0x0001, 1))) { |
| 124 if (tl) |
124 if (tl) |
| 125 aim_freetlvchain(tl); |
125 aim_freetlvchain(&tl); |
| 126 faimdprintf(sess, 0, "corrupt ICQ response\n"); |
126 faimdprintf(sess, 0, "corrupt ICQ response\n"); |
| 127 return 0; |
127 return 0; |
| 128 } |
128 } |
| 129 |
129 |
| 130 aim_bstream_init(&qbs, datatlv->value, datatlv->length); |
130 aim_bstream_init(&qbs, datatlv->value, datatlv->length); |
| 163 |
163 |
| 164 if ((userfunc = aim_callhandler(sess, rx->conn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSGCOMPLETE))) |
164 if ((userfunc = aim_callhandler(sess, rx->conn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSGCOMPLETE))) |
| 165 ret = userfunc(sess, rx); |
165 ret = userfunc(sess, rx); |
| 166 } |
166 } |
| 167 |
167 |
| 168 aim_freetlvchain(tl); |
168 aim_freetlvchain(&tl); |
| 169 |
169 |
| 170 return ret; |
170 return ret; |
| 171 } |
171 } |
| 172 |
172 |
| 173 static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
173 static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |