| 200 static int purple_conv_chat_leave (OscarData *, FlapConnection *, FlapFrame *, ...); |
200 static int purple_conv_chat_leave (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 201 static int purple_conv_chat_info_update (OscarData *, FlapConnection *, FlapFrame *, ...); |
201 static int purple_conv_chat_info_update (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 202 static int purple_conv_chat_incoming_msg(OscarData *, FlapConnection *, FlapFrame *, ...); |
202 static int purple_conv_chat_incoming_msg(OscarData *, FlapConnection *, FlapFrame *, ...); |
| 203 static int purple_email_parseupdate(OscarData *, FlapConnection *, FlapFrame *, ...); |
203 static int purple_email_parseupdate(OscarData *, FlapConnection *, FlapFrame *, ...); |
| 204 static int purple_icon_parseicon (OscarData *, FlapConnection *, FlapFrame *, ...); |
204 static int purple_icon_parseicon (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 205 static int oscar_icon_req (OscarData *, FlapConnection *, FlapFrame *, ...); |
|
| 206 static int purple_parse_msgack (OscarData *, FlapConnection *, FlapFrame *, ...); |
205 static int purple_parse_msgack (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 207 static int purple_parse_evilnotify (OscarData *, FlapConnection *, FlapFrame *, ...); |
206 static int purple_parse_evilnotify (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 208 static int purple_parse_searcherror(OscarData *, FlapConnection *, FlapFrame *, ...); |
207 static int purple_parse_searcherror(OscarData *, FlapConnection *, FlapFrame *, ...); |
| 209 static int purple_parse_searchreply(OscarData *, FlapConnection *, FlapFrame *, ...); |
208 static int purple_parse_searchreply(OscarData *, FlapConnection *, FlapFrame *, ...); |
| 210 static int purple_bosrights (OscarData *, FlapConnection *, FlapFrame *, ...); |
209 static int purple_bosrights (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 1560 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_USERINFO, purple_parse_userinfo, 0); |
1559 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_USERINFO, purple_parse_userinfo, 0); |
| 1561 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_ERROR, purple_parse_locerr, 0); |
1560 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_ERROR, purple_parse_locerr, 0); |
| 1562 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0001, purple_parse_genericerr, 0); |
1561 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0001, purple_parse_genericerr, 0); |
| 1563 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x000f, purple_selfinfo, 0); |
1562 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x000f, purple_selfinfo, 0); |
| 1564 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x001f, purple_memrequest, 0); |
1563 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x001f, purple_memrequest, 0); |
| 1565 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0021, oscar_icon_req,0); |
|
| 1566 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_REDIRECT, purple_handle_redirect, 0); |
1564 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_REDIRECT, purple_handle_redirect, 0); |
| 1567 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_MOTD, purple_parse_motd, 0); |
1565 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_MOTD, purple_parse_motd, 0); |
| 1568 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_EVIL, purple_parse_evilnotify, 0); |
1566 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_EVIL, purple_parse_evilnotify, 0); |
| 1569 oscar_data_addhandler(od, SNAC_FAMILY_POPUP, 0x0002, purple_popup, 0); |
1567 oscar_data_addhandler(od, SNAC_FAMILY_POPUP, 0x0002, purple_popup, 0); |
| 1570 oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, SNAC_SUBTYPE_USERLOOKUP_ERROR, purple_parse_searcherror, 0); |
1568 oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, SNAC_SUBTYPE_USERLOOKUP_ERROR, purple_parse_searcherror, 0); |
| 6241 } |
6239 } |
| 6242 |
6240 |
| 6243 return ret; |
6241 return ret; |
| 6244 } |
6242 } |
| 6245 |
6243 |
| 6246 |
|
| 6247 static int oscar_icon_req(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
| 6248 PurpleConnection *gc = od->gc; |
|
| 6249 va_list ap; |
|
| 6250 guint16 type; |
|
| 6251 guint8 flags = 0, length = 0; |
|
| 6252 guchar *md5 = NULL; |
|
| 6253 |
|
| 6254 va_start(ap, fr); |
|
| 6255 type = va_arg(ap, int); |
|
| 6256 |
|
| 6257 switch(type) { |
|
| 6258 case 0x0000: |
|
| 6259 case 0x0001: { |
|
| 6260 flags = va_arg(ap, int); |
|
| 6261 length = va_arg(ap, int); |
|
| 6262 md5 = va_arg(ap, guchar *); |
|
| 6263 |
|
| 6264 if ((flags == 0x00) || (flags == 0x41)) { |
|
| 6265 if (!flap_connection_getbytype(od, SNAC_FAMILY_BART) && !od->iconconnecting) { |
|
| 6266 od->iconconnecting = TRUE; |
|
| 6267 od->set_icon = TRUE; |
|
| 6268 aim_srv_requestnew(od, SNAC_FAMILY_BART); |
|
| 6269 } else { |
|
| 6270 PurpleAccount *account = purple_connection_get_account(gc); |
|
| 6271 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account); |
|
| 6272 if (img == NULL) { |
|
| 6273 aim_ssi_delicon(od); |
|
| 6274 } else { |
|
| 6275 |
|
| 6276 purple_debug_info("oscar", |
|
| 6277 "Uploading icon to icon server\n"); |
|
| 6278 aim_bart_upload(od, purple_imgstore_get_data(img), |
|
| 6279 purple_imgstore_get_size(img)); |
|
| 6280 purple_imgstore_unref(img); |
|
| 6281 } |
|
| 6282 } |
|
| 6283 } else if (flags == 0x81) { |
|
| 6284 PurpleAccount *account = purple_connection_get_account(gc); |
|
| 6285 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account); |
|
| 6286 if (img == NULL) |
|
| 6287 aim_ssi_delicon(od); |
|
| 6288 else { |
|
| 6289 aim_ssi_seticon(od, md5, length); |
|
| 6290 purple_imgstore_unref(img); |
|
| 6291 } |
|
| 6292 } |
|
| 6293 } break; |
|
| 6294 |
|
| 6295 case 0x0002: { /* We just set an "available" message? */ |
|
| 6296 } break; |
|
| 6297 } |
|
| 6298 |
|
| 6299 va_end(ap); |
|
| 6300 |
|
| 6301 return 0; |
|
| 6302 } |
|
| 6303 |
|
| 6304 void oscar_set_permit_deny(PurpleConnection *gc) { |
6244 void oscar_set_permit_deny(PurpleConnection *gc) { |
| 6305 PurpleAccount *account = purple_connection_get_account(gc); |
6245 PurpleAccount *account = purple_connection_get_account(gc); |
| 6306 OscarData *od = purple_connection_get_protocol_data(gc); |
6246 OscarData *od = purple_connection_get_protocol_data(gc); |
| 6307 PurplePrivacyType perm_deny; |
6247 PurplePrivacyType perm_deny; |
| 6308 |
6248 |