Mercurial > pidgin.yaz
comparison libpurple/protocols/msn/notification.c @ 20471:530a92d50c5e
Misc cleanups, better error handling, and print the Address Book received from the server in a human readable way.
author | Carlos Silva <typ0@pidgin.im> |
---|---|
date | Tue, 17 Jul 2007 00:35:50 +0000 |
parents | 7d6f247f08d9 |
children | 416ce8a7ac66 |
comparison
equal
deleted
inserted
replaced
20470:7d6f247f08d9 | 20471:530a92d50c5e |
---|---|
269 for (cur = elems; *cur != NULL; cur++) | 269 for (cur = elems; *cur != NULL; cur++) |
270 { | 270 { |
271 tokens = g_strsplit(*cur, "=", 2); | 271 tokens = g_strsplit(*cur, "=", 2); |
272 if(tokens[0]&&tokens[1]) | 272 if(tokens[0]&&tokens[1]) |
273 { | 273 { |
274 purple_debug_info("MaYuan","challenge %p,key:%s,value:%s\n", | 274 purple_debug_info("MSNP14","challenge %p,key:%s,value:%s\n", |
275 session->nexus->challenge_data,tokens[0],tokens[1]); | 275 session->nexus->challenge_data,tokens[0],tokens[1]); |
276 g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); | 276 g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); |
277 } | 277 } |
278 /* Don't free each of the tokens, only the array. */ | 278 /* Don't free each of the tokens, only the array. */ |
279 g_free(tokens); | 279 g_free(tokens); |
403 } | 403 } |
404 | 404 |
405 static void | 405 static void |
406 msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 406 msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
407 { | 407 { |
408 purple_debug_info("MaYuan","Processing MSG... \n"); | 408 purple_debug_info("MSNP14","Processing MSG... \n"); |
409 if(cmd->payload_len == 0){ | 409 if(cmd->payload_len == 0){ |
410 return; | 410 return; |
411 } | 411 } |
412 /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued | 412 /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued |
413 * command and we are processing it */ | 413 * command and we are processing it */ |
418 } | 418 } |
419 else | 419 else |
420 { | 420 { |
421 g_return_if_fail(cmd->payload_cb != NULL); | 421 g_return_if_fail(cmd->payload_cb != NULL); |
422 | 422 |
423 purple_debug_info("MaYuan","MSG payload:{%s}\n",cmd->payload); | 423 purple_debug_info("MSNP14","MSG payload:{%s}\n",cmd->payload); |
424 cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len); | 424 cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len); |
425 } | 425 } |
426 } | 426 } |
427 | 427 |
428 /*send Message to Yahoo Messenger*/ | 428 /*send Message to Yahoo Messenger*/ |
436 int type; | 436 int type; |
437 | 437 |
438 cmdproc = session->notification->cmdproc; | 438 cmdproc = session->notification->cmdproc; |
439 g_return_if_fail(msg != NULL); | 439 g_return_if_fail(msg != NULL); |
440 payload = msn_message_gen_payload(msg, &payload_len); | 440 payload = msn_message_gen_payload(msg, &payload_len); |
441 purple_debug_info("MaYuan","send UUM,payload{%s},strlen:%d,len:%d\n", | 441 purple_debug_info("MSNP14","send UUM,payload{%s},strlen:%d,len:%d\n", |
442 payload,strlen(payload),payload_len); | 442 payload,strlen(payload),payload_len); |
443 type = msg->type; | 443 type = msg->type; |
444 trans = msn_transaction_new(cmdproc, "UUM","%s 32 %d %d",msg->remote_user,type,payload_len); | 444 trans = msn_transaction_new(cmdproc, "UUM","%s 32 %d %d",msg->remote_user,type,payload_len); |
445 msn_transaction_set_payload(trans, payload, strlen(payload)); | 445 msn_transaction_set_payload(trans, payload, strlen(payload)); |
446 msn_cmdproc_send_trans(cmdproc, trans); | 446 msn_cmdproc_send_trans(cmdproc, trans); |
453 MsnMessage *msg; | 453 MsnMessage *msg; |
454 PurpleConnection *gc; | 454 PurpleConnection *gc; |
455 const char *passport; | 455 const char *passport; |
456 const char *content_type; | 456 const char *content_type; |
457 | 457 |
458 purple_debug_info("MaYuan","Process UBM payload:%s\n",payload); | 458 purple_debug_info("MSNP14","Process UBM payload:%s\n",payload); |
459 msg = msn_message_new_from_cmd(cmdproc->session, cmd); | 459 msg = msn_message_new_from_cmd(cmdproc->session, cmd); |
460 | 460 |
461 msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM); | 461 msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM); |
462 #ifdef MSN_DEBUG_NS | 462 #ifdef MSN_DEBUG_NS |
463 msn_message_show_readable(msg, "Notification", TRUE); | 463 msn_message_show_readable(msg, "Notification", TRUE); |
465 | 465 |
466 gc = cmdproc->session->account->gc; | 466 gc = cmdproc->session->account->gc; |
467 passport = msg->remote_user; | 467 passport = msg->remote_user; |
468 | 468 |
469 content_type = msn_message_get_content_type(msg); | 469 content_type = msn_message_get_content_type(msg); |
470 purple_debug_info("MaYuan","type:%d\n",content_type); | 470 purple_debug_info("MSNP14","type:%d\n",content_type); |
471 if(!strcmp(content_type,"text/plain")){ | 471 if(!strcmp(content_type,"text/plain")){ |
472 const char *value; | 472 const char *value; |
473 const char *body; | 473 const char *body; |
474 char *body_str; | 474 char *body_str; |
475 char *body_enc; | 475 char *body_enc; |
524 | 524 |
525 /*Yahoo msg process*/ | 525 /*Yahoo msg process*/ |
526 static void | 526 static void |
527 ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 527 ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
528 { | 528 { |
529 purple_debug_info("MaYuan","Processing UBM... \n"); | 529 purple_debug_info("MSNP14","Processing UBM... \n"); |
530 if(cmd->payload_len == 0){ | 530 if(cmd->payload_len == 0){ |
531 return; | 531 return; |
532 } | 532 } |
533 /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued | 533 /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued |
534 * command and we are processing it */ | 534 * command and we are processing it */ |
536 cmdproc->last_cmd->payload_cb = ubm_cmd_post; | 536 cmdproc->last_cmd->payload_cb = ubm_cmd_post; |
537 cmdproc->servconn->payload_len = atoi(cmd->params[2]); | 537 cmdproc->servconn->payload_len = atoi(cmd->params[2]); |
538 }else{ | 538 }else{ |
539 g_return_if_fail(cmd->payload_cb != NULL); | 539 g_return_if_fail(cmd->payload_cb != NULL); |
540 | 540 |
541 purple_debug_info("MaYuan","UBM payload:{%s}\n",cmd->payload); | 541 purple_debug_info("MSNP14","UBM payload:{%s}\n",cmd->payload); |
542 ubm_cmd_post(cmdproc, cmd, cmd->payload, cmd->payload_len); | 542 ubm_cmd_post(cmdproc, cmd, cmd->payload, cmd->payload_len); |
543 } | 543 } |
544 } | 544 } |
545 | 545 |
546 /************************************************************************** | 546 /************************************************************************** |
570 g_snprintf(buf + (i*2), 3, "%02x", digest[i]); | 570 g_snprintf(buf + (i*2), 3, "%02x", digest[i]); |
571 } | 571 } |
572 #else | 572 #else |
573 msn_handle_chl(cmd->params[1], buf); | 573 msn_handle_chl(cmd->params[1], buf); |
574 #endif | 574 #endif |
575 // purple_debug_info("MaYuan","<<challenge:{%s}:{%s}\n",cmd->params[1],buf); | 575 // purple_debug_info("MSNP14","<<challenge:{%s}:{%s}\n",cmd->params[1],buf); |
576 trans = msn_transaction_new(cmdproc, "QRY", "%s 32", MSNP13_WLM_PRODUCT_ID); | 576 trans = msn_transaction_new(cmdproc, "QRY", "%s 32", MSNP13_WLM_PRODUCT_ID); |
577 | 577 |
578 msn_transaction_set_payload(trans, buf, 32); | 578 msn_transaction_set_payload(trans, buf, 32); |
579 | 579 |
580 msn_cmdproc_send_trans(cmdproc, trans); | 580 msn_cmdproc_send_trans(cmdproc, trans); |
591 char **tokens; | 591 char **tokens; |
592 char *email,*domain; | 592 char *email,*domain; |
593 char *list_op_str,*type_str; | 593 char *list_op_str,*type_str; |
594 | 594 |
595 purple_debug_info("::","msn_add_contact_xml()\n"); | 595 purple_debug_info("::","msn_add_contact_xml()\n"); |
596 purple_debug_info("MaYuan","Passport: %s, type: %d\n",passport, type); | 596 purple_debug_info("MSNP14","Passport: %s, type: %d\n",passport, type); |
597 tokens = g_strsplit(passport, "@", 2); | 597 tokens = g_strsplit(passport, "@", 2); |
598 email = tokens[0]; | 598 email = tokens[0]; |
599 domain = tokens[1]; | 599 domain = tokens[1]; |
600 | 600 |
601 /*find a domain Node*/ | 601 /*find a domain Node*/ |
602 for(d_node = xmlnode_get_child(mlNode,"d"); d_node; d_node = xmlnode_get_next_twin(d_node)) | 602 for(d_node = xmlnode_get_child(mlNode,"d"); d_node; d_node = xmlnode_get_next_twin(d_node)) |
603 { | 603 { |
604 const char * attr = NULL; | 604 const char * attr = NULL; |
605 purple_debug_info("MaYuan","d_node: %s\n",d_node->name); | 605 purple_debug_info("MSNP14","d_node: %s\n",d_node->name); |
606 attr = xmlnode_get_attrib(d_node,"n"); | 606 attr = xmlnode_get_attrib(d_node,"n"); |
607 if(attr == NULL){ | 607 if(attr == NULL){ |
608 continue; | 608 continue; |
609 } | 609 } |
610 if(!strcmp(attr,domain)){ | 610 if(!strcmp(attr,domain)){ |
612 } | 612 } |
613 } | 613 } |
614 if(d_node == NULL) | 614 if(d_node == NULL) |
615 { | 615 { |
616 /*domain not found, create a new domain Node*/ | 616 /*domain not found, create a new domain Node*/ |
617 purple_debug_info("MaYuan","get No d_node\n"); | 617 purple_debug_info("MSNP14","get No d_node\n"); |
618 d_node = xmlnode_new("d"); | 618 d_node = xmlnode_new("d"); |
619 xmlnode_set_attrib(d_node,"n",domain); | 619 xmlnode_set_attrib(d_node,"n",domain); |
620 xmlnode_insert_child(mlNode,d_node); | 620 xmlnode_insert_child(mlNode,d_node); |
621 } | 621 } |
622 | 622 |
623 /*create contact node*/ | 623 /*create contact node*/ |
624 c_node = xmlnode_new("c"); | 624 c_node = xmlnode_new("c"); |
625 xmlnode_set_attrib(c_node,"n",email); | 625 xmlnode_set_attrib(c_node,"n",email); |
626 | 626 |
627 list_op_str = g_strdup_printf("%d",list_op); | 627 list_op_str = g_strdup_printf("%d",list_op); |
628 purple_debug_info("MaYuan","list_op: %d\n",list_op); | 628 purple_debug_info("MSNP14","list_op: %d\n",list_op); |
629 xmlnode_set_attrib(c_node,"l",list_op_str); | 629 xmlnode_set_attrib(c_node,"l",list_op_str); |
630 g_free(list_op_str); | 630 g_free(list_op_str); |
631 | 631 |
632 if (type != MSN_USER_TYPE_UNKNOWN) { | 632 if (type != MSN_USER_TYPE_UNKNOWN) { |
633 type_str = g_strdup_printf("%d", type); | 633 type_str = g_strdup_printf("%d", type); |
650 static void | 650 static void |
651 msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_len) | 651 msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_len) |
652 { | 652 { |
653 MsnTransaction *trans; | 653 MsnTransaction *trans; |
654 purple_debug_info("::","msn_notification_post_adl()\n"); | 654 purple_debug_info("::","msn_notification_post_adl()\n"); |
655 purple_debug_info("MaYuan","Sending ADL with payload: %s\n",payload); | 655 purple_debug_info("MSNP14","Sending ADL with payload: %s\n",payload); |
656 trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload)); | 656 trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload)); |
657 msn_transaction_set_payload(trans, payload, strlen(payload)); | 657 msn_transaction_set_payload(trans, payload, strlen(payload)); |
658 msn_cmdproc_send_trans(cmdproc, trans); | 658 msn_cmdproc_send_trans(cmdproc, trans); |
659 } | 659 } |
660 | 660 |
738 } | 738 } |
739 | 739 |
740 static void | 740 static void |
741 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 741 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
742 { | 742 { |
743 purple_debug_info("MaYuan","Process BLP\n"); | 743 purple_debug_info("MSNP14","Process BLP\n"); |
744 } | 744 } |
745 | 745 |
746 static void | 746 static void |
747 adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 747 adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
748 { | 748 { |
749 static int initial; | 749 static int initial; |
750 | 750 |
751 purple_debug_info("MaYuan","Process ADL\n"); | 751 purple_debug_info("MSNP14","Process ADL\n"); |
752 | 752 |
753 if (!initial) | 753 if (!initial) |
754 { | 754 { |
755 purple_debug_info("typ0","Initial ADL received\n"); | 755 purple_debug_misc("MSNP14","Initial ADL received\n"); |
756 msn_session_finish_login(cmdproc->session); | 756 msn_session_finish_login(cmdproc->session); |
757 } | 757 } |
758 } | 758 } |
759 | 759 |
760 static void | 760 static void |
777 | 777 |
778 static void | 778 static void |
779 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, | 779 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, |
780 size_t len) | 780 size_t len) |
781 { | 781 { |
782 purple_debug_info("MaYuan","FQY payload{%s}\n",payload); | 782 purple_debug_info("MSNP14","FQY payload{%s}\n",payload); |
783 msn_notification_post_adl(cmdproc,payload,len); | 783 msn_notification_post_adl(cmdproc,payload,len); |
784 } | 784 } |
785 | 785 |
786 static void | 786 static void |
787 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 787 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
788 { | 788 { |
789 purple_debug_info("MaYuan","Process FQY\n"); | 789 purple_debug_info("MSNP14","Process FQY\n"); |
790 cmdproc->last_cmd->payload_cb = fqy_cmd_post; | 790 cmdproc->last_cmd->payload_cb = fqy_cmd_post; |
791 } | 791 } |
792 | 792 |
793 static void | 793 static void |
794 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 794 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
796 #if 0 | 796 #if 0 |
797 MsnTransaction *trans; | 797 MsnTransaction *trans; |
798 char * payload; | 798 char * payload; |
799 #endif | 799 #endif |
800 | 800 |
801 purple_debug_info("MaYuan","Process RML\n"); | 801 purple_debug_info("MSNP14","Process RML\n"); |
802 #if 0 | 802 #if 0 |
803 trans = msn_transaction_new(cmdproc, "RML",""); | 803 trans = msn_transaction_new(cmdproc, "RML",""); |
804 | 804 |
805 msn_transaction_set_payload(trans, payload, strlen(payload)); | 805 msn_transaction_set_payload(trans, payload, strlen(payload)); |
806 | 806 |
1504 } | 1504 } |
1505 | 1505 |
1506 buf = xmlnode_to_formatted_str(root, NULL); | 1506 buf = xmlnode_to_formatted_str(root, NULL); |
1507 | 1507 |
1508 /* get the payload content */ | 1508 /* get the payload content */ |
1509 purple_debug_info("MaYuan","GCF command payload:\n\"%s\"\n",buf); | 1509 purple_debug_info("MSNP14","GCF command payload:\n%s\n",buf); |
1510 | 1510 |
1511 g_free(buf); | 1511 g_free(buf); |
1512 xmlnode_free(root); | 1512 xmlnode_free(root); |
1513 } | 1513 } |
1514 | 1514 |
1515 static void | 1515 static void |
1516 gcf_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 1516 gcf_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1517 { | 1517 { |
1518 purple_debug_info("MaYuan","Processing GCF command\n"); | 1518 purple_debug_info("MSNP14","Processing GCF command\n"); |
1519 cmdproc->last_cmd->payload_cb = gcf_cmd_post; | 1519 cmdproc->last_cmd->payload_cb = gcf_cmd_post; |
1520 return; | 1520 return; |
1521 } | 1521 } |
1522 | 1522 |
1523 static void | 1523 static void |
1524 sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 1524 sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1525 { | 1525 { |
1526 purple_debug_info("MaYuan","Processing SBS... \n"); | 1526 purple_debug_info("MSNP14","Processing SBS... \n"); |
1527 if(cmd->payload_len == 0){ | 1527 if(cmd->payload_len == 0){ |
1528 return; | 1528 return; |
1529 } | 1529 } |
1530 /*get the payload content*/ | 1530 /*get the payload content*/ |
1531 } | 1531 } |
1545 MsnUser *user; | 1545 MsnUser *user; |
1546 const char *passport; | 1546 const char *passport; |
1547 char *psm_str, *currentmedia_str; | 1547 char *psm_str, *currentmedia_str; |
1548 | 1548 |
1549 /*get the payload content*/ | 1549 /*get the payload content*/ |
1550 // purple_debug_info("MaYuan","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload); | 1550 // purple_debug_info("MSNP14","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload); |
1551 | 1551 |
1552 session = cmdproc->session; | 1552 session = cmdproc->session; |
1553 account = session->account; | 1553 account = session->account; |
1554 gc = purple_account_get_connection(account); | 1554 gc = purple_account_get_connection(account); |
1555 | 1555 |
1569 } | 1569 } |
1570 | 1570 |
1571 static void | 1571 static void |
1572 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 1572 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1573 { | 1573 { |
1574 purple_debug_info("typ0","UBX received.\n"); | 1574 purple_debug_misc("MSNP14","UBX received.\n"); |
1575 if(cmd->payload_len == 0){ | 1575 if(cmd->payload_len == 0){ |
1576 return; | 1576 return; |
1577 } | 1577 } |
1578 cmdproc->last_cmd->payload_cb = ubx_cmd_post; | 1578 cmdproc->last_cmd->payload_cb = ubx_cmd_post; |
1579 } | 1579 } |
1580 | 1580 |
1581 static void | 1581 static void |
1582 uux_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | 1582 uux_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1583 { | 1583 { |
1584 purple_debug_info("typ0","UUX received.\n"); | 1584 purple_debug_misc("MSNP14","UUX received.\n"); |
1585 } | 1585 } |
1586 | 1586 |
1587 /************************************************************************** | 1587 /************************************************************************** |
1588 * Message Types | 1588 * Message Types |
1589 **************************************************************************/ | 1589 **************************************************************************/ |
1932 msn_add_contact_xml(notification->session,rml_node,who,1,MSN_USER_TYPE_PASSPORT); | 1932 msn_add_contact_xml(notification->session,rml_node,who,1,MSN_USER_TYPE_PASSPORT); |
1933 | 1933 |
1934 payload = xmlnode_to_str(rml_node,&payload_len); | 1934 payload = xmlnode_to_str(rml_node,&payload_len); |
1935 xmlnode_free(rml_node); | 1935 xmlnode_free(rml_node); |
1936 | 1936 |
1937 purple_debug_info("MaYuan","Send RML with payload {%s}\n",payload); | 1937 purple_debug_info("MSNP14","Send RML with payload {%s}\n",payload); |
1938 trans = msn_transaction_new(cmdproc, "RML","%d",strlen(payload)); | 1938 trans = msn_transaction_new(cmdproc, "RML","%d",strlen(payload)); |
1939 msn_transaction_set_payload(trans, payload, strlen(payload)); | 1939 msn_transaction_set_payload(trans, payload, strlen(payload)); |
1940 msn_cmdproc_send_trans(cmdproc, trans); | 1940 msn_cmdproc_send_trans(cmdproc, trans); |
1941 } | 1941 } |
1942 | 1942 |