comparison libpurple/protocols/msn/notification.c @ 21284:6de09629f091

propagate from branch 'im.pidgin.pidgin.next.minor' (head 0c9637482b845cc65e95a26e144697391c51133f) to branch 'im.pidgin.pidgin' (head e3a6991e78dac328f13804950fee54dfb8afc3c5)
author Ka-Hing Cheung <khc@hxbc.us>
date Sat, 10 Nov 2007 04:52:20 +0000
parents b1fa7765ca4b 35b4f1dc4c8d
children ab0fd591c7c5
comparison
equal deleted inserted replaced
21283:406aa3be6b32 21284:6de09629f091
260 elems = g_strsplit(cmd->params[3], ",", 0); 260 elems = g_strsplit(cmd->params[3], ",", 0);
261 261
262 for (cur = elems; *cur != NULL; cur++) 262 for (cur = elems; *cur != NULL; cur++)
263 { 263 {
264 tokens = g_strsplit(*cur, "=", 2); 264 tokens = g_strsplit(*cur, "=", 2);
265 if(tokens[0]&&tokens[1]) 265 if(tokens[0] && tokens[1])
266 { 266 {
267 purple_debug_info("MSNP14","challenge %p,key:%s,value:%s\n", 267 purple_debug_info("MSNP14","challenge %p,key:%s,value:%s\n",
268 session->nexus->challenge_data,tokens[0],tokens[1]); 268 session->nexus->challenge_data,tokens[0],tokens[1]);
269 g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); 269 g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]);
270 } 270 /* Don't free each of the tokens, only the array. */
271 /* Don't free each of the tokens, only the array. */ 271 g_free(tokens);
272 g_free(tokens); 272 } else
273 g_strfreev(tokens);
273 } 274 }
274 275
275 g_strfreev(elems); 276 g_strfreev(elems);
276 277
277 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_START); 278 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_START);
411 } 412 }
412 else 413 else
413 { 414 {
414 g_return_if_fail(cmd->payload_cb != NULL); 415 g_return_if_fail(cmd->payload_cb != NULL);
415 416
416 purple_debug_info("MSNP14","MSG payload:{%s}\n",cmd->payload); 417 purple_debug_info("MSNP14","MSG payload:{%.*s}\n",cmd->payload_len, cmd->payload);
417 cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len); 418 cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len);
418 } 419 }
419 } 420 }
420 421
421 /*send Message to Yahoo Messenger*/ 422 /*send Message to Yahoo Messenger*/
462 content_type = msn_message_get_content_type(msg); 463 content_type = msn_message_get_content_type(msg);
463 purple_debug_info("MSNP14","type:%d\n",content_type); 464 purple_debug_info("MSNP14","type:%d\n",content_type);
464 if(!strcmp(content_type,"text/plain")){ 465 if(!strcmp(content_type,"text/plain")){
465 const char *value; 466 const char *value;
466 const char *body; 467 const char *body;
467 char *body_str;
468 char *body_enc; 468 char *body_enc;
469 char *body_final = NULL; 469 char *body_final = NULL;
470 size_t body_len; 470 size_t body_len;
471 471
472 body = msn_message_get_bin_data(msg, &body_len); 472 body = msn_message_get_bin_data(msg, &body_len);
473 body_str = g_strndup(body, body_len); 473 body_enc = g_markup_escape_text(body, body_len);
474 body_enc = g_markup_escape_text(body_str, -1);
475 g_free(body_str);
476 474
477 if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL) { 475 if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL) {
478 char *pre, *post; 476 char *pre, *post;
479 477
480 msn_parse_format(value, &pre, &post); 478 msn_parse_format(value, &pre, &post);
483 g_free(pre); 481 g_free(pre);
484 g_free(post); 482 g_free(post);
485 } 483 }
486 g_free(body_enc); 484 g_free(body_enc);
487 serv_got_im(gc, passport, body_final, 0, time(NULL)); 485 serv_got_im(gc, passport, body_final, 0, time(NULL));
486 g_free(body_final);
488 } 487 }
489 if(!strcmp(content_type,"text/x-msmsgscontrol")){ 488 if(!strcmp(content_type,"text/x-msmsgscontrol")){
490 if(msn_message_get_attr(msg, "TypingUser") != NULL){ 489 if(msn_message_get_attr(msg, "TypingUser") != NULL){
491 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT, 490 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT,
492 PURPLE_TYPING); 491 PURPLE_TYPING);
733 trans = msn_transaction_new(cmdproc, "FQY","%d", strlen(payload)); 732 trans = msn_transaction_new(cmdproc, "FQY","%d", strlen(payload));
734 msn_transaction_set_payload(trans, payload, strlen(payload)); 733 msn_transaction_set_payload(trans, payload, strlen(payload));
735 msn_cmdproc_send_trans(cmdproc, trans); 734 msn_cmdproc_send_trans(cmdproc, trans);
736 735
737 g_free(payload); 736 g_free(payload);
738 g_free(tokens); 737 g_strfreev(tokens);
739 } 738 }
740 739
741 static void 740 static void
742 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 741 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
743 { 742 {
1410 1409
1411 if ((fd = purple_mkstemp(&session->passport_info.file, FALSE)) == NULL) 1410 if ((fd = purple_mkstemp(&session->passport_info.file, FALSE)) == NULL)
1412 { 1411 {
1413 purple_debug_error("msn", 1412 purple_debug_error("msn",
1414 "Error opening temp passport file: %s\n", 1413 "Error opening temp passport file: %s\n",
1415 strerror(errno)); 1414 g_strerror(errno));
1416 } 1415 }
1417 else 1416 else
1418 { 1417 {
1419 #ifdef _WIN32 1418 #ifdef _WIN32
1420 fputs("<!-- saved from url=(0013)about:internet -->\n", fd); 1419 fputs("<!-- saved from url=(0013)about:internet -->\n", fd);
1459 1458
1460 if (fclose(fd)) 1459 if (fclose(fd))
1461 { 1460 {
1462 purple_debug_error("msn", 1461 purple_debug_error("msn",
1463 "Error closing temp passport file: %s\n", 1462 "Error closing temp passport file: %s\n",
1464 strerror(errno)); 1463 g_strerror(errno));
1465 1464
1466 g_unlink(session->passport_info.file); 1465 g_unlink(session->passport_info.file);
1467 g_free(session->passport_info.file); 1466 g_free(session->passport_info.file);
1468 session->passport_info.file = NULL; 1467 session->passport_info.file = NULL;
1469 } 1468 }
1788 if (strcmp(msg->remote_user, "Hotmail")) 1787 if (strcmp(msg->remote_user, "Hotmail"))
1789 /* This isn't an official message. */ 1788 /* This isn't an official message. */
1790 return; 1789 return;
1791 1790
1792 /*new a oim session*/ 1791 /*new a oim session*/
1793 session->oim = msn_oim_new(session); 1792 // session->oim = msn_oim_new(session);
1794 // msn_oim_connect(session->oim); 1793 // msn_oim_connect(session->oim);
1795 1794
1796 table = msn_message_get_hashtable_from_body(msg); 1795 table = msn_message_get_hashtable_from_body(msg);
1797 1796
1798 mdata = g_hash_table_lookup(table, "Mail-Data"); 1797 mdata = g_hash_table_lookup(table, "Mail-Data");