Mercurial > pidgin
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"); |