libpurple/protocols/gg/gg.c

changeset 34437
ca6d1b4d24b5
parent 34435
5f8f4ad241d1
child 34442
4534c27446e8
child 34946
76aa2e0f8701
equal deleted inserted replaced
34436:3282a6c292dc 34437:ca6d1b4d24b5
330 _("Server disconnected")); 330 _("Server disconnected"));
331 break; 331 break;
332 case GG_EVENT_MSG: 332 case GG_EVENT_MSG:
333 ggp_message_got(gc, &ev->event.msg); 333 ggp_message_got(gc, &ev->event.msg);
334 break; 334 break;
335 #if GGP_ENABLE_GG11
335 case GG_EVENT_ACK110: 336 case GG_EVENT_ACK110:
336 break; 337 break;
338 #endif
337 case GG_EVENT_IMAGE_REPLY: 339 case GG_EVENT_IMAGE_REPLY:
338 ggp_image_recv(gc, &ev->event.image_reply); 340 ggp_image_recv(gc, &ev->event.image_reply);
339 break; 341 break;
340 case GG_EVENT_IMAGE_REQUEST: 342 case GG_EVENT_IMAGE_REQUEST:
341 ggp_image_send(gc, &ev->event.image_request); 343 ggp_image_send(gc, &ev->event.image_request);
353 ggp_xml_event_handler(gc, ev->event.xml_event.data); 355 ggp_xml_event_handler(gc, ev->event.xml_event.data);
354 break; 356 break;
355 case GG_EVENT_USER_DATA: 357 case GG_EVENT_USER_DATA:
356 ggp_events_user_data(gc, &ev->event.user_data); 358 ggp_events_user_data(gc, &ev->event.user_data);
357 break; 359 break;
360 #if GGP_ENABLE_GG11
358 case GG_EVENT_JSON_EVENT: 361 case GG_EVENT_JSON_EVENT:
359 ggp_events_json(gc, &ev->event.json_event); 362 ggp_events_json(gc, &ev->event.json_event);
360 break; 363 break;
364 #endif
361 case GG_EVENT_USERLIST100_VERSION: 365 case GG_EVENT_USERLIST100_VERSION:
362 ggp_roster_version(gc, &ev->event.userlist100_version); 366 ggp_roster_version(gc, &ev->event.userlist100_version);
363 break; 367 break;
364 case GG_EVENT_USERLIST100_REPLY: 368 case GG_EVENT_USERLIST100_REPLY:
365 ggp_roster_reply(gc, &ev->event.userlist100_reply); 369 ggp_roster_reply(gc, &ev->event.userlist100_reply);
368 ggp_message_got_multilogon(gc, &ev->event.multilogon_msg); 372 ggp_message_got_multilogon(gc, &ev->event.multilogon_msg);
369 break; 373 break;
370 case GG_EVENT_MULTILOGON_INFO: 374 case GG_EVENT_MULTILOGON_INFO:
371 ggp_multilogon_info(gc, &ev->event.multilogon_info); 375 ggp_multilogon_info(gc, &ev->event.multilogon_info);
372 break; 376 break;
377 #if GGP_ENABLE_GG11
373 case GG_EVENT_IMTOKEN: 378 case GG_EVENT_IMTOKEN:
374 purple_debug_info("gg", "gg11: got IMTOKEN\n"); 379 purple_debug_info("gg", "gg11: got IMTOKEN\n");
375 g_free(info->imtoken); 380 g_free(info->imtoken);
376 info->imtoken = g_strdup(ev->event.imtoken.imtoken); 381 info->imtoken = g_strdup(ev->event.imtoken.imtoken);
377 break; 382 break;
383 case GG_EVENT_CHAT_INFO_UPDATE: 388 case GG_EVENT_CHAT_INFO_UPDATE:
384 case GG_EVENT_CHAT_CREATED: 389 case GG_EVENT_CHAT_CREATED:
385 case GG_EVENT_CHAT_INVITE_ACK: 390 case GG_EVENT_CHAT_INVITE_ACK:
386 ggp_chat_got_event(gc, ev); 391 ggp_chat_got_event(gc, ev);
387 break; 392 break;
393 #endif
388 default: 394 default:
389 purple_debug_warning("gg", 395 purple_debug_warning("gg",
390 "unsupported event type=%d\n", ev->type); 396 "unsupported event type=%d\n", ev->type);
391 break; 397 break;
392 } 398 }
430 purple_debug_info("gg", "GG_STATE_READING_REPLY\n"); 436 purple_debug_info("gg", "GG_STATE_READING_REPLY\n");
431 break; 437 break;
432 case GG_STATE_TLS_NEGOTIATION: 438 case GG_STATE_TLS_NEGOTIATION:
433 purple_debug_info("gg", "GG_STATE_TLS_NEGOTIATION\n"); 439 purple_debug_info("gg", "GG_STATE_TLS_NEGOTIATION\n");
434 break; 440 break;
441 #if GGP_ENABLE_GG11
435 case GG_STATE_RESOLVING_HUB: 442 case GG_STATE_RESOLVING_HUB:
436 purple_debug_info("gg", "GG_STATE_RESOLVING_HUB\n"); 443 purple_debug_info("gg", "GG_STATE_RESOLVING_HUB\n");
437 break; 444 break;
438 case GG_STATE_READING_HUB: 445 case GG_STATE_READING_HUB:
439 purple_debug_info("gg", "GG_STATE_READING_HUB\n"); 446 purple_debug_info("gg", "GG_STATE_READING_HUB\n");
440 break; 447 break;
448 #endif
441 default: 449 default:
442 purple_debug_error("gg", "unknown state = %d\n", 450 purple_debug_error("gg", "unknown state = %d\n",
443 info->session->state); 451 info->session->state);
444 break; 452 break;
445 } 453 }
470 /* Nothing happened. */ 478 /* Nothing happened. */
471 purple_debug_info("gg", "GG_EVENT_NONE\n"); 479 purple_debug_info("gg", "GG_EVENT_NONE\n");
472 break; 480 break;
473 case GG_EVENT_CONN_SUCCESS: 481 case GG_EVENT_CONN_SUCCESS:
474 { 482 {
483 #if GGP_ENABLE_GG11
475 purple_debug_info("gg", "GG_EVENT_CONN_SUCCESS:" 484 purple_debug_info("gg", "GG_EVENT_CONN_SUCCESS:"
476 " successfully connected to %s\n", 485 " successfully connected to %s\n",
477 info->session->connect_host); 486 info->session->connect_host);
478 ggp_servconn_add_server(info->session-> 487 ggp_servconn_add_server(info->session->
479 connect_host); 488 connect_host);
489 #endif
480 purple_input_remove(info->inpa); 490 purple_input_remove(info->inpa);
481 info->inpa = purple_input_add(info->session->fd, 491 info->inpa = purple_input_add(info->session->fd,
482 PURPLE_INPUT_READ, 492 PURPLE_INPUT_READ,
483 ggp_callback_recv, gc); 493 ggp_callback_recv, gc);
484 494
630 static void ggp_login(PurpleAccount *account) 640 static void ggp_login(PurpleAccount *account)
631 { 641 {
632 PurpleConnection *gc = purple_account_get_connection(account); 642 PurpleConnection *gc = purple_account_get_connection(account);
633 struct gg_login_params *glp; 643 struct gg_login_params *glp;
634 GGPInfo *info; 644 GGPInfo *info;
645 #if GGP_ENABLE_GG11
635 const char *address; 646 const char *address;
647 #endif
636 const gchar *encryption_type, *protocol_version; 648 const gchar *encryption_type, *protocol_version;
637 649
638 if (!ggp_deprecated_setup_proxy(gc)) 650 if (!ggp_deprecated_setup_proxy(gc))
639 return; 651 return;
640 652
641 purple_connection_set_flags(gc, PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC); 653 purple_connection_set_flags(gc, PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC);
642 654
643 glp = g_new0(struct gg_login_params, 1); 655 glp = g_new0(struct gg_login_params, 1);
656 #if GGP_ENABLE_GG11
644 glp->struct_size = sizeof(struct gg_login_params); 657 glp->struct_size = sizeof(struct gg_login_params);
658 #endif
645 info = g_new0(GGPInfo, 1); 659 info = g_new0(GGPInfo, 1);
646 660
647 purple_connection_set_protocol_data(gc, info); 661 purple_connection_set_protocol_data(gc, info);
648 662
649 ggp_tcpsocket_setup(gc, glp); 663 ggp_tcpsocket_setup(gc, glp);
706 720
707 protocol_version = purple_account_get_string(account, 721 protocol_version = purple_account_get_string(account,
708 "protocol_version", "default"); 722 "protocol_version", "default");
709 purple_debug_info("gg", "Requested protocol version: %s\n", 723 purple_debug_info("gg", "Requested protocol version: %s\n",
710 protocol_version); 724 protocol_version);
725 #if GGP_ENABLE_GG11
711 if (g_strcmp0(protocol_version, "gg10") == 0) 726 if (g_strcmp0(protocol_version, "gg10") == 0)
712 glp->protocol_version = GG_PROTOCOL_VERSION_100; 727 glp->protocol_version = GG_PROTOCOL_VERSION_100;
713 else if (g_strcmp0(protocol_version, "gg11") == 0) 728 else if (g_strcmp0(protocol_version, "gg11") == 0)
714 glp->protocol_version = GG_PROTOCOL_VERSION_110; 729 glp->protocol_version = GG_PROTOCOL_VERSION_110;
730 #else
731 glp->protocol_version = 0x2e;
732 #endif
715 733
716 ggp_status_set_initial(gc, glp); 734 ggp_status_set_initial(gc, glp);
717 735
736 #if GGP_ENABLE_GG11
718 address = purple_account_get_string(account, "gg_server", ""); 737 address = purple_account_get_string(account, "gg_server", "");
719 if (address && *address) 738 if (address && *address)
720 glp->connect_host = g_strdup(address); 739 glp->connect_host = g_strdup(address);
740 #endif
721 741
722 info->session = gg_login(glp); 742 info->session = gg_login(glp);
743 #if GGP_ENABLE_GG11
723 g_free(glp->connect_host); 744 g_free(glp->connect_host);
745 #endif
724 purple_str_wipe(glp->password); 746 purple_str_wipe(glp->password);
725 g_free(glp); 747 g_free(glp);
726 748
727 purple_connection_update_progress(gc, _("Connecting"), 0, 2); 749 purple_connection_update_progress(gc, _("Connecting"), 0, 2);
728 if (info->session == NULL) { 750 if (info->session == NULL) {
938 ggp_list_emblem, /* list_emblem */ 960 ggp_list_emblem, /* list_emblem */
939 ggp_status_buddy_text, /* status_text */ 961 ggp_status_buddy_text, /* status_text */
940 ggp_tooltip_text, /* tooltip_text */ 962 ggp_tooltip_text, /* tooltip_text */
941 ggp_status_types, /* status_types */ 963 ggp_status_types, /* status_types */
942 NULL, /* blist_node_menu */ 964 NULL, /* blist_node_menu */
965 #if GGP_ENABLE_GG11
943 ggp_chat_info, /* chat_info */ 966 ggp_chat_info, /* chat_info */
944 ggp_chat_info_defaults, /* chat_info_defaults */ 967 ggp_chat_info_defaults, /* chat_info_defaults */
968 #else
969 NULL, NULL,
970 #endif
945 ggp_login, /* login */ 971 ggp_login, /* login */
946 ggp_close, /* close */ 972 ggp_close, /* close */
947 ggp_message_send_im, /* send_im */ 973 ggp_message_send_im, /* send_im */
948 NULL, /* set_info */ 974 NULL, /* set_info */
949 ggp_send_typing, /* send_typing */ 975 ggp_send_typing, /* send_typing */
958 NULL, /* add_permit */ 984 NULL, /* add_permit */
959 ggp_add_deny, /* add_deny */ 985 ggp_add_deny, /* add_deny */
960 NULL, /* rem_permit */ 986 NULL, /* rem_permit */
961 ggp_rem_deny, /* rem_deny */ 987 ggp_rem_deny, /* rem_deny */
962 NULL, /* set_permit_deny */ 988 NULL, /* set_permit_deny */
989 #if GGP_ENABLE_GG11
963 ggp_chat_join, /* join_chat */ 990 ggp_chat_join, /* join_chat */
964 NULL, /* TODO */ /* reject_chat */ 991 NULL, /* TODO */ /* reject_chat */
965 ggp_chat_get_name, /* get_chat_name */ 992 ggp_chat_get_name, /* get_chat_name */
966 ggp_chat_invite, /* chat_invite */ 993 ggp_chat_invite, /* chat_invite */
967 ggp_chat_leave, /* chat_leave */ 994 ggp_chat_leave, /* chat_leave */
968 NULL, /* chat_whisper */ 995 NULL, /* chat_whisper */
969 ggp_chat_send, /* chat_send */ 996 ggp_chat_send, /* chat_send */
997 #else
998 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
999 #endif
970 ggp_keepalive, /* keepalive */ 1000 ggp_keepalive, /* keepalive */
971 ggp_account_register, /* register_user */ 1001 ggp_account_register, /* register_user */
972 NULL, /* get_cb_info */ 1002 NULL, /* get_cb_info */
973 ggp_roster_alias_buddy, /* alias_buddy */ 1003 ggp_roster_alias_buddy, /* alias_buddy */
974 ggp_roster_group_buddy, /* group_buddy */ 1004 ggp_roster_group_buddy, /* group_buddy */
979 ggp_avatar_own_set, /* set_buddy_icon */ 1009 ggp_avatar_own_set, /* set_buddy_icon */
980 NULL, /* remove_group */ 1010 NULL, /* remove_group */
981 NULL, /* get_cb_real_name */ 1011 NULL, /* get_cb_real_name */
982 NULL, /* set_chat_topic */ 1012 NULL, /* set_chat_topic */
983 NULL, /* find_blist_chat */ 1013 NULL, /* find_blist_chat */
1014 #if GGP_ENABLE_GG11
984 ggp_chat_roomlist_get_list, /* roomlist_get_list */ 1015 ggp_chat_roomlist_get_list, /* roomlist_get_list */
1016 #else
1017 NULL,
1018 #endif
985 NULL, /* roomlist_cancel */ 1019 NULL, /* roomlist_cancel */
986 NULL, /* roomlist_expand_category */ 1020 NULL, /* roomlist_expand_category */
987 ggp_edisc_xfer_can_receive_file,/* can_receive_file */ 1021 ggp_edisc_xfer_can_receive_file,/* can_receive_file */
988 ggp_edisc_xfer_send_file, /* send_file */ 1022 ggp_edisc_xfer_send_file, /* send_file */
989 ggp_edisc_xfer_send_new, /* new_xfer */ 1023 ggp_edisc_xfer_send_new, /* new_xfer */

mercurial