libpurple/protocols/gg/gg.c

branch
soc.2013.gobjectification.plugins
changeset 37065
3546d731987e
parent 37063
a84be725efad
parent 35360
29d788c72350
child 37101
8ba9a23354ff
equal deleted inserted replaced
37064:3373bd0b4ea6 37065:3546d731987e
249 { 249 {
250 PurpleXmlNode *xml = NULL; 250 PurpleXmlNode *xml = NULL;
251 PurpleXmlNode *xmlnode_next_event; 251 PurpleXmlNode *xmlnode_next_event;
252 252
253 xml = purple_xmlnode_from_str(data, -1); 253 xml = purple_xmlnode_from_str(data, -1);
254 if (xml == NULL) 254 if (xml == NULL) {
255 {
256 purple_debug_error("gg", "ggp_xml_event_handler: " 255 purple_debug_error("gg", "ggp_xml_event_handler: "
257 "invalid xml: [%s]\n", data); 256 "invalid xml: [%s]\n", data);
258 goto out; 257 goto out;
259 } 258 }
260 259
261 xmlnode_next_event = purple_xmlnode_get_child(xml, "event"); 260 xmlnode_next_event = purple_xmlnode_get_child(xml, "event");
262 while (xmlnode_next_event != NULL) 261 while (xmlnode_next_event != NULL) {
263 {
264 PurpleXmlNode *xmlnode_current_event = xmlnode_next_event; 262 PurpleXmlNode *xmlnode_current_event = xmlnode_next_event;
265 263
266 PurpleXmlNode *xmlnode_type; 264 PurpleXmlNode *xmlnode_type;
267 char *event_type_raw; 265 char *event_type_raw;
268 int event_type = 0; 266 int event_type = 0;
280 if (event_type_raw != NULL) 278 if (event_type_raw != NULL)
281 event_type = atoi(event_type_raw); 279 event_type = atoi(event_type_raw);
282 g_free(event_type_raw); 280 g_free(event_type_raw);
283 281
284 xmlnode_sender = purple_xmlnode_get_child(xmlnode_current_event, "sender"); 282 xmlnode_sender = purple_xmlnode_get_child(xmlnode_current_event, "sender");
285 if (xmlnode_sender != NULL) 283 if (xmlnode_sender != NULL) {
286 {
287 event_sender_raw = purple_xmlnode_get_data(xmlnode_sender); 284 event_sender_raw = purple_xmlnode_get_data(xmlnode_sender);
288 if (event_sender_raw != NULL) 285 if (event_sender_raw != NULL)
289 event_sender = ggp_str_to_uin(event_sender_raw); 286 event_sender = ggp_str_to_uin(event_sender_raw);
290 g_free(event_sender_raw); 287 g_free(event_sender_raw);
291 } 288 }
470 purple_debug_info("gg", "GG_STATE_READING_HUB\n"); 467 purple_debug_info("gg", "GG_STATE_READING_HUB\n");
471 break; 468 break;
472 #endif 469 #endif
473 default: 470 default:
474 purple_debug_error("gg", "unknown state = %d\n", 471 purple_debug_error("gg", "unknown state = %d\n",
475 info->session->state); 472 info->session->state);
476 break; 473 break;
477 } 474 }
478 475
479 if (!(ev = gg_watch_fd(info->session))) { 476 if (!(ev = gg_watch_fd(info->session))) {
480 purple_debug_error("gg", "login_handler: gg_watch_fd failed!\n"); 477 purple_debug_error("gg", "login_handler: gg_watch_fd failed!\n");
511 ggp_servconn_add_server(info->session-> 508 ggp_servconn_add_server(info->session->
512 connect_host); 509 connect_host);
513 #endif 510 #endif
514 purple_input_remove(info->inpa); 511 purple_input_remove(info->inpa);
515 info->inpa = purple_input_add(info->session->fd, 512 info->inpa = purple_input_add(info->session->fd,
516 PURPLE_INPUT_READ, 513 PURPLE_INPUT_READ,
517 ggp_callback_recv, gc); 514 ggp_callback_recv, gc);
518 515
519 purple_connection_update_progress(gc, _("Connected"), 1, 2); 516 purple_connection_update_progress(gc, _("Connected"), 1, 2);
520 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED); 517 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED);
521 518
522 ggp_buddylist_send(gc); 519 ggp_buddylist_send(gc);
523 ggp_roster_request_update(gc); 520 ggp_roster_request_update(gc);
524 } 521 }
525 break; 522 break;
526 case GG_EVENT_CONN_FAILED: 523 case GG_EVENT_CONN_FAILED:
527 if (info->inpa > 0) 524 if (info->inpa > 0) {
528 {
529 purple_input_remove(info->inpa); 525 purple_input_remove(info->inpa);
530 info->inpa = 0; 526 info->inpa = 0;
531 } 527 }
532 purple_debug_info("gg", "Connection failure: %d\n", 528 purple_debug_info("gg", "Connection failure: %d\n",
533 ev->event.failure); 529 ev->event.failure);
586 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, 582 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
587 _("Connection failed")); 583 _("Connection failed"));
588 } 584 }
589 break; 585 break;
590 case GG_EVENT_MSG: 586 case GG_EVENT_MSG:
591 if (ev->event.msg.sender == 0) 587 if (ev->event.msg.sender == 0) {
592 {
593 if (ev->event.msg.message == NULL) 588 if (ev->event.msg.message == NULL)
594 break; 589 break;
595 590
596 /* system messages are mostly ads */ 591 /* system messages are mostly ads */
597 purple_debug_info("gg", "System message:\n%s\n", 592 purple_debug_info("gg", "System message:\n%s\n",
598 ev->event.msg.message); 593 ev->event.msg.message);
599 } 594 } else {
600 else
601 purple_debug_warning("gg", "GG_EVENT_MSG: message from user %u " 595 purple_debug_warning("gg", "GG_EVENT_MSG: message from user %u "
602 "unexpected while connecting:\n%s\n", 596 "unexpected while connecting:\n%s\n",
603 ev->event.msg.sender, 597 ev->event.msg.sender,
604 ev->event.msg.message); 598 ev->event.msg.message);
599 }
605 break; 600 break;
606 default: 601 default:
607 purple_debug_error("gg", "strange event: %d\n", ev->type); 602 purple_debug_error("gg", "strange event: %d\n", ev->type);
608 break; 603 break;
609 } 604 }
804 info = purple_connection_get_protocol_data(gc); 799 info = purple_connection_get_protocol_data(gc);
805 800
806 purple_notify_close_with_handle(gc); 801 purple_notify_close_with_handle(gc);
807 802
808 if (info) { 803 if (info) {
809 if (info->session != NULL) 804 if (info->session != NULL) {
810 {
811 ggp_status_set_disconnected(account); 805 ggp_status_set_disconnected(account);
812 gg_logoff(info->session); 806 gg_logoff(info->session);
813 gg_free_session(info->session); 807 gg_free_session(info->session);
814 } 808 }
815 809
938 m = g_list_append(m, act); 932 m = g_list_append(m, act);
939 933
940 m = g_list_append(m, NULL); 934 m = g_list_append(m, NULL);
941 935
942 act = purple_protocol_action_new(_("Save buddylist to file..."), 936 act = purple_protocol_action_new(_("Save buddylist to file..."),
943 ggp_action_buddylist_save); 937 ggp_action_buddylist_save);
944 m = g_list_append(m, act); 938 m = g_list_append(m, act);
945 939
946 act = purple_protocol_action_new(_("Load buddylist from file..."), 940 act = purple_protocol_action_new(_("Load buddylist from file..."),
947 ggp_action_buddylist_load); 941 ggp_action_buddylist_load);
948 m = g_list_append(m, act); 942 m = g_list_append(m, act);
949 943
950 return m; 944 return m;
951 } 945 }
952 946

mercurial