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",