Mercurial > pidgin.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
8645:47f647dd2ac3 | 8646:1e211dde3cae |
---|---|
136 } | 136 } |
137 | 137 |
138 static void | 138 static void |
139 send_to_mobile_cb(MsnMobileData *data, const char *entry) | 139 send_to_mobile_cb(MsnMobileData *data, const char *entry) |
140 { | 140 { |
141 MsnSession *session = data->gc->proto_data; | 141 MsnSession *session; |
142 MsnServConn *servconn = session->notification_conn; | 142 MsnServConn *servconn; |
143 MsnUser *user; | |
144 MsnPage *page; | 143 MsnPage *page; |
145 char *page_str; | 144 char *buf; |
146 | 145 char *payload; |
147 user = msn_user_new(session, data->passport, NULL); | 146 size_t len; |
147 size_t payload_len; | |
148 | |
149 session = data->gc->proto_data; | |
150 servconn = session->notification_conn; | |
148 | 151 |
149 page = msn_page_new(); | 152 page = msn_page_new(); |
150 msn_page_set_receiver(page, user); | |
151 msn_page_set_transaction_id(page, ++session->trId); | |
152 msn_page_set_body(page, entry); | 153 msn_page_set_body(page, entry); |
153 | 154 buf = g_strdup_printf("PGD %d %s 1 %d\r\n", ++session->trId, |
154 page_str = msn_page_build_string(page); | 155 data->passport, page->size); |
155 | 156 |
156 msn_user_destroy(user); | 157 len = strlen(buf); |
158 | |
159 payload = msn_page_gen_payload(page, &payload_len); | |
160 | |
161 if (payload != NULL) | |
162 { | |
163 buf = g_realloc(buf, len + payload_len + 1); | |
164 memcpy(buf + len, payload, payload_len); | |
165 len += payload_len; | |
166 buf[len] = 0; | |
167 } | |
168 | |
157 msn_page_destroy(page); | 169 msn_page_destroy(page); |
158 | 170 |
159 if (!msn_servconn_write(servconn, page_str, strlen(page_str))) { | 171 if (!msn_servconn_write(servconn, buf, len)) |
160 | 172 { |
161 gaim_connection_error(data->gc, _("Write error")); | 173 gaim_connection_error(data->gc, _("Write error")); |
162 } | 174 } |
163 | 175 |
164 g_free(page_str); | 176 g_free(buf); |
165 } | 177 } |
166 | 178 |
167 static void | 179 static void |
168 close_mobile_page_cb(MsnMobileData *data, const char *entry) | 180 close_mobile_page_cb(MsnMobileData *data, const char *entry) |
169 { | 181 { |
539 user = msn_user_new(session, who, NULL); | 551 user = msn_user_new(session, who, NULL); |
540 | 552 |
541 msn_import_html(message, &msgformat, &msgtext); | 553 msn_import_html(message, &msgformat, &msgtext); |
542 | 554 |
543 msg = msn_message_new(); | 555 msg = msn_message_new(); |
544 msn_message_set_receiver(msg, user); | |
545 msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); | 556 msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); |
546 msn_message_set_body(msg, msgtext); | 557 msn_message_set_body(msg, msgtext); |
547 | 558 |
548 g_free(msgformat); | 559 g_free(msgformat); |
549 g_free(msgtext); | 560 g_free(msgtext); |
609 | 620 |
610 user = msn_user_new(session, who, NULL); | 621 user = msn_user_new(session, who, NULL); |
611 | 622 |
612 msg = msn_message_new(); | 623 msg = msn_message_new(); |
613 msn_message_set_content_type(msg, "text/x-msmsgscontrol"); | 624 msn_message_set_content_type(msg, "text/x-msmsgscontrol"); |
614 msn_message_set_receiver(msg, user); | |
615 msn_message_set_charset(msg, NULL); | 625 msn_message_set_charset(msg, NULL); |
616 msn_message_set_flag(msg, 'U'); | 626 msn_message_set_flag(msg, 'U'); |
617 msn_message_set_attr(msg, "TypingUser", | 627 msn_message_set_attr(msg, "TypingUser", |
618 gaim_account_get_username(account)); | 628 gaim_account_get_username(account)); |
619 msn_message_set_attr(msg, "User-Agent", NULL); | 629 msn_message_set_attr(msg, "User-Agent", NULL); |