libpurple/protocols/yahoo/libymsg.c

branch
next.minor
changeset 29694
4efd5d82fef3
parent 29653
5492cf7eb5b7
parent 29324
125eb74677d6
child 29869
0a5078a3e0fe
child 32376
dd86e84c21a5
equal deleted inserted replaced
29693:1f3d2781dc78 29694:4efd5d82fef3
539 norm_bud = g_strconcat("ocs/", temp, NULL); 539 norm_bud = g_strconcat("ocs/", temp, NULL);
540 break; 540 break;
541 case YAHOO_FEDERATION_IBM: 541 case YAHOO_FEDERATION_IBM:
542 norm_bud = g_strconcat("ibm/", temp, NULL); 542 norm_bud = g_strconcat("ibm/", temp, NULL);
543 break; 543 break;
544 case YAHOO_FEDERATION_PBX:
545 norm_bud = g_strconcat("pbx/", temp, NULL);
546 break;
544 case YAHOO_FEDERATION_NONE: 547 case YAHOO_FEDERATION_NONE:
545 norm_bud = g_strdup(temp); 548 norm_bud = g_strdup(temp);
546 break; 549 break;
547 } 550 }
548 if (yd->current_list15_grp) { 551 if (yd->current_list15_grp) {
831 fed_from = g_strconcat("ocs/", from, NULL); 834 fed_from = g_strconcat("ocs/", from, NULL);
832 break; 835 break;
833 case YAHOO_FEDERATION_IBM: 836 case YAHOO_FEDERATION_IBM:
834 fed_from = g_strconcat("ibm/", from, NULL); 837 fed_from = g_strconcat("ibm/", from, NULL);
835 break; 838 break;
839 case YAHOO_FEDERATION_PBX:
840 fed_from = g_strconcat("pbx/", from, NULL);
841 break;
836 case YAHOO_FEDERATION_NONE: 842 case YAHOO_FEDERATION_NONE:
837 default: 843 default:
838 break; 844 break;
839 } 845 }
840 846
842 serv_got_typing(gc, fed_from, 0, PURPLE_TYPING); 848 serv_got_typing(gc, fed_from, 0, PURPLE_TYPING);
843 else 849 else
844 serv_got_typing_stopped(gc, fed_from); 850 serv_got_typing_stopped(gc, fed_from);
845 851
846 if (fed_from != from) 852 if (fed_from != from)
847 g_free(fed_from); 853 g_free(fed_from);
848 854
849 } else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) { 855 } else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) {
850 PurpleBuddy *bud = purple_find_buddy(account, from); 856 PurpleBuddy *bud = purple_find_buddy(account, from);
851 857
852 if (!bud) { 858 if (!bud) {
997 im->fed_from = g_strconcat("ocs/",im->from, NULL); 1003 im->fed_from = g_strconcat("ocs/",im->from, NULL);
998 break; 1004 break;
999 case YAHOO_FEDERATION_IBM: 1005 case YAHOO_FEDERATION_IBM:
1000 im->fed_from = g_strconcat("ibm/",im->from, NULL); 1006 im->fed_from = g_strconcat("ibm/",im->from, NULL);
1001 break; 1007 break;
1008 case YAHOO_FEDERATION_PBX:
1009 im->fed_from = g_strconcat("pbx/",im->from, NULL);
1010 break;
1002 case YAHOO_FEDERATION_NONE: 1011 case YAHOO_FEDERATION_NONE:
1003 default: 1012 default:
1004 im->fed_from = g_strdup(im->from); 1013 im->fed_from = g_strdup(im->from);
1005 break; 1014 break;
1006 } 1015 }
1008 1017
1009 } 1018 }
1010 /* peer session id */ 1019 /* peer session id */
1011 if (im && (pair->key == 11)) { 1020 if (im && (pair->key == 11)) {
1012 /* disconnect the peer if connected through p2p and sends wrong value for session id */ 1021 /* disconnect the peer if connected through p2p and sends wrong value for session id */
1013 if( (im->fed == YAHOO_FEDERATION_NONE) && (pkt_type == YAHOO_PKT_TYPE_P2P) 1022 if( (im->fed == YAHOO_FEDERATION_NONE) && (pkt_type == YAHOO_PKT_TYPE_P2P)
1014 && (yd->session_id != strtol(pair->value, NULL, 10)) ) 1023 && (yd->session_id != strtol(pair->value, NULL, 10)) )
1015 { 1024 {
1016 purple_debug_warning("yahoo","p2p: %s sent us message with wrong session id. Disconnecting p2p connection to peer\n", im->fed_from); 1025 purple_debug_warning("yahoo","p2p: %s sent us message with wrong session id. Disconnecting p2p connection to peer\n", im->fed_from);
1017 /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */ 1026 /* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
1018 g_hash_table_remove(yd->peers, im->fed_from); 1027 g_hash_table_remove(yd->peers, im->fed_from);
4254 status = xmlnode_get_data(validate_data_child); 4263 status = xmlnode_get_data(validate_data_child);
4255 4264
4256 validate_data_child = xmlnode_get_child(validate_data_root, "carrier"); 4265 validate_data_child = xmlnode_get_child(validate_data_root, "carrier");
4257 carrier = xmlnode_get_data(validate_data_child); 4266 carrier = xmlnode_get_data(validate_data_child);
4258 4267
4259 purple_debug_info("yahoo","SMS validate data: Mobile:%s, Status:%s, Carrier:%s\n", mobile_no, status, carrier); 4268 purple_debug_info("yahoo", "SMS validate data: %s\n", webdata);
4260 4269
4261 if( strcmp(status, "Valid") == 0) { 4270 if (status && g_str_equal(status, "Valid") == 0) {
4262 g_hash_table_insert(yd->sms_carrier, g_strdup_printf("+%s", mobile_no), g_strdup(carrier)); 4271 g_hash_table_insert(yd->sms_carrier,
4263 yahoo_send_im(sms_cb_data->gc, sms_cb_data->who, sms_cb_data->what, PURPLE_MESSAGE_SEND); 4272 g_strdup_printf("+%s", mobile_no), g_strdup(carrier));
4264 } 4273 yahoo_send_im(sms_cb_data->gc, sms_cb_data->who,
4265 else { 4274 sms_cb_data->what, PURPLE_MESSAGE_SEND);
4266 g_hash_table_insert(yd->sms_carrier, g_strdup_printf("+%s", mobile_no), g_strdup("Unknown")); 4275 } else {
4267 purple_conversation_write(conv, NULL, _("Can't send SMS. Unknown mobile carrier."), PURPLE_MESSAGE_SYSTEM, time(NULL)); 4276 g_hash_table_insert(yd->sms_carrier,
4277 g_strdup_printf("+%s", mobile_no), g_strdup("Unknown"));
4278 purple_conversation_write(conv, NULL,
4279 _("Can't send SMS. Unknown mobile carrier."),
4280 PURPLE_MESSAGE_SYSTEM, time(NULL));
4268 } 4281 }
4269 4282
4270 xmlnode_free(validate_data_child); 4283 xmlnode_free(validate_data_child);
4271 xmlnode_free(validate_data_root); 4284 xmlnode_free(validate_data_root);
4272 g_free(sms_cb_data->who); 4285 g_free(sms_cb_data->who);
4419 fed_who = who; 4432 fed_who = who;
4420 switch (fed) { 4433 switch (fed) {
4421 case YAHOO_FEDERATION_MSN: 4434 case YAHOO_FEDERATION_MSN:
4422 case YAHOO_FEDERATION_OCS: 4435 case YAHOO_FEDERATION_OCS:
4423 case YAHOO_FEDERATION_IBM: 4436 case YAHOO_FEDERATION_IBM:
4437 case YAHOO_FEDERATION_PBX:
4424 fed_who += 4; 4438 fed_who += 4;
4425 break; 4439 break;
4426 case YAHOO_FEDERATION_NONE: 4440 case YAHOO_FEDERATION_NONE:
4427 default: 4441 default:
4428 break; 4442 break;
4519 const char *fed_who = who; 4533 const char *fed_who = who;
4520 switch (fed) { 4534 switch (fed) {
4521 case YAHOO_FEDERATION_MSN: 4535 case YAHOO_FEDERATION_MSN:
4522 case YAHOO_FEDERATION_OCS: 4536 case YAHOO_FEDERATION_OCS:
4523 case YAHOO_FEDERATION_IBM: 4537 case YAHOO_FEDERATION_IBM:
4538 case YAHOO_FEDERATION_PBX:
4524 fed_who += 4; 4539 fed_who += 4;
4525 break; 4540 break;
4526 case YAHOO_FEDERATION_NONE: 4541 case YAHOO_FEDERATION_NONE:
4527 default: 4542 default:
4528 break; 4543 break;

mercurial