Mercurial > pidgin.yaz
diff src/protocols/msn/msn.c @ 8646:1e211dde3cae
[gaim-migrate @ 9398]
Added a patch by shx to clean up the message-handling code and split the
command stuff from it, among a few other things. Also, I fixed a crash in
message parsing, which I think may close a couple bug reports.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Tue, 13 Apr 2004 04:08:22 +0000 |
parents | 1d5e31e518fc |
children | cc2ce209cc46 |
line wrap: on
line diff
--- a/src/protocols/msn/msn.c Tue Apr 13 03:53:37 2004 +0000 +++ b/src/protocols/msn/msn.c Tue Apr 13 04:08:22 2004 +0000 @@ -138,30 +138,42 @@ static void send_to_mobile_cb(MsnMobileData *data, const char *entry) { - MsnSession *session = data->gc->proto_data; - MsnServConn *servconn = session->notification_conn; - MsnUser *user; + MsnSession *session; + MsnServConn *servconn; MsnPage *page; - char *page_str; + char *buf; + char *payload; + size_t len; + size_t payload_len; - user = msn_user_new(session, data->passport, NULL); + session = data->gc->proto_data; + servconn = session->notification_conn; page = msn_page_new(); - msn_page_set_receiver(page, user); - msn_page_set_transaction_id(page, ++session->trId); msn_page_set_body(page, entry); + buf = g_strdup_printf("PGD %d %s 1 %d\r\n", ++session->trId, + data->passport, page->size); + + len = strlen(buf); + + payload = msn_page_gen_payload(page, &payload_len); - page_str = msn_page_build_string(page); + if (payload != NULL) + { + buf = g_realloc(buf, len + payload_len + 1); + memcpy(buf + len, payload, payload_len); + len += payload_len; + buf[len] = 0; + } - msn_user_destroy(user); msn_page_destroy(page); - if (!msn_servconn_write(servconn, page_str, strlen(page_str))) { - + if (!msn_servconn_write(servconn, buf, len)) + { gaim_connection_error(data->gc, _("Write error")); } - g_free(page_str); + g_free(buf); } static void @@ -541,7 +553,6 @@ msn_import_html(message, &msgformat, &msgtext); msg = msn_message_new(); - msn_message_set_receiver(msg, user); msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); msn_message_set_body(msg, msgtext); @@ -611,7 +622,6 @@ msg = msn_message_new(); msn_message_set_content_type(msg, "text/x-msmsgscontrol"); - msn_message_set_receiver(msg, user); msn_message_set_charset(msg, NULL); msn_message_set_flag(msg, 'U'); msn_message_set_attr(msg, "TypingUser",