diff src/protocols/msn/msn.c @ 2603:24664768a739

[gaim-migrate @ 2616] i shouldn't have modified gaim.h like i did. *slaps own wrists* Do as I say, not as I do. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 25 Oct 2001 05:05:05 +0000
parents 8aade06646b5
children e0d4a23aac89
line wrap: on
line diff
--- a/src/protocols/msn/msn.c	Thu Oct 25 02:30:12 2001 +0000
+++ b/src/protocols/msn/msn.c	Thu Oct 25 05:05:05 2001 +0000
@@ -426,7 +426,9 @@
 			add_chat_buddy(ms->chat, user);
 		ms->total++;
 		while (ms->txqueue) {
-			char *utf8 = str_to_utf8(ms->txqueue->data);
+			char *send = add_cr(ms->txqueue->data);
+			char *utf8 = str_to_utf8(send);
+			g_free(send);
 			g_snprintf(buf, sizeof(buf), "MSG %d N %d\r\n%s%s", ++ms->trId,
 					strlen(MIME_HEADER) + strlen(utf8),
 					MIME_HEADER, utf8);
@@ -441,9 +443,8 @@
 		}
 	} else if (!g_strncasecmp(buf, "MSG", 3)) {
 		char *user, *tmp = buf;
-		int length;
+		int length, len, r;
 		char *msg, *content, *agent, *utf;
-		int len, r;
 		int flags = 0;
 
 		GET_NEXT(tmp);
@@ -454,7 +455,7 @@
 		GET_NEXT(tmp);
 		length = atoi(tmp);
 
-		msg = g_new0(char, MAX(length + 1, MSN_BUF_LEN));
+		msg = g_malloc0(length + 1);
 
 		for (len = 0; len < length; len += r) {
 			if ((r = read(ms->fd, msg+len, length-len)) <= 0) {
@@ -477,7 +478,7 @@
 		}
 		if (!g_strncasecmp(content, "Content-Type: text/plain",
 				     strlen("Content-Type: text/plain"))) {
-			char *final, *skiphead;
+			char *skiphead;
 			skiphead = strstr(msg, "\r\n\r\n");
 			if (!skiphead || !skiphead[4]) {
 				g_free(msg);
@@ -485,17 +486,14 @@
 			}
 			skiphead += 4;
 			utf = utf8_to_str(skiphead);
-			len = MAX(strlen(utf) + 1, BUF_LEN);
-			final = g_malloc(len);
-			g_snprintf(final, len, "%s", utf);
-			g_free(utf);
+			strip_linefeed(utf);
 
 			if (ms->chat)
-				serv_got_chat_in(gc, ms->chat->id, user, flags, final, time(NULL));
+				serv_got_chat_in(gc, ms->chat->id, user, flags, utf, time(NULL));
 			else
-				serv_got_im(gc, user, final, flags, time(NULL));
+				serv_got_im(gc, user, utf, flags, time(NULL));
 
-			g_free(final);
+			g_free(utf);
 		}
 		g_free(msg);
 	} else if (!g_strncasecmp(buf, "NAK", 3)) {
@@ -512,7 +510,7 @@
 		if (!ms)
 			return;
 
-		g_snprintf(buf, sizeof(buf), "CAL %d %s\n", ++ms->trId, ms->user);
+		g_snprintf(buf, sizeof(buf), "CAL %d %s\r\n", ++ms->trId, ms->user);
 		if (msn_write(ms->fd, buf, strlen(buf)) < 0)
 			msn_kill_switch(ms);
 	} else if (isdigit(*buf)) {
@@ -542,7 +540,7 @@
 	if (ms->fd != source)
 		ms->fd = source;
 
-	g_snprintf(buf, sizeof(buf), "ANS %d %s %s %s\n", ++ms->trId, gc->username, ms->auth, ms->sessid);
+	g_snprintf(buf, sizeof(buf), "ANS %d %s %s %s\r\n", ++ms->trId, gc->username, ms->auth, ms->sessid);
 	if (msn_write(ms->fd, buf, strlen(buf)) < 0) {
 		close(ms->fd);
 		g_free(ms->sessid);
@@ -573,7 +571,7 @@
 	if (ms->fd != source)
 		ms->fd = source;
 
-	g_snprintf(buf, sizeof(buf), "USR %d %s %s\n", ++ms->trId, gc->username, ms->auth);
+	g_snprintf(buf, sizeof(buf), "USR %d %s %s\r\n", ++ms->trId, gc->username, ms->auth);
 	if (msn_write(ms->fd, buf, strlen(buf)) < 0) {
 		g_free(ms->auth);
 		g_free(ms);
@@ -594,7 +592,7 @@
 	struct msn_data *md = map->gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\n", ++md->trId, map->user, map->friend);
+	g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\r\n", ++md->trId, map->user, map->friend);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(map->gc, "Write error");
 		signoff(map->gc);
@@ -786,7 +784,7 @@
 			if (pos != tot)
 				return;
 
-			g_snprintf(buf, sizeof(buf), "CHG %d NLN\n", ++md->trId);
+			g_snprintf(buf, sizeof(buf), "CHG %d NLN\r\n", ++md->trId);
 			if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 				hide_login_progress(gc, "Unable to write");
 				signoff(gc);
@@ -802,7 +800,7 @@
 			if (bud_list_cache_exists(gc))
 				do_import(gc, NULL);
 			else {
-				g_snprintf(buf, sizeof(buf), "BLP %d AL\n", ++md->trId);
+				g_snprintf(buf, sizeof(buf), "BLP %d AL\r\n", ++md->trId);
 				if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 					hide_login_progress(gc, "Unable to write");
 					signoff(gc);
@@ -827,7 +825,7 @@
 	} else if (!g_strncasecmp(buf, "MSG", 3)) {
 		char *user, *tmp = buf;
 		int length;
-		char *msg, *skiphead, *utf, *final;
+		char *msg, *skiphead, *utf;
 		int len, r;
 
 		GET_NEXT(tmp);
@@ -862,14 +860,11 @@
 		}
 		skiphead += 4;
 		utf = utf8_to_str(skiphead);
-		len = MAX(strlen(utf) + 1, BUF_LEN);
-		final = g_malloc(len);
-		g_snprintf(final, len, "%s", utf);
+		strip_linefeed(utf);
+
+		serv_got_im(gc, user, utf, 0, time(NULL));
+
 		g_free(utf);
-
-		serv_got_im(gc, user, final, 0, time(NULL));
-
-		g_free(final);
 		g_free(msg);
 	} else if (!g_strncasecmp(buf, "NLN", 3)) {
 		char *state, *user, *tmp = buf;
@@ -1025,7 +1020,7 @@
 		return;
 	}
 
-	g_snprintf(buf, sizeof(buf), "VER %d MSNP5\n", ++md->trId);
+	g_snprintf(buf, sizeof(buf), "VER %d MSNP5\r\n", ++md->trId);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Unable to talk to Notification Server");
 		signoff(gc);
@@ -1063,7 +1058,7 @@
 			return;
 		}
 
-		g_snprintf(buf, sizeof(buf), "INF %d\n", ++md->trId);
+		g_snprintf(buf, sizeof(buf), "INF %d\r\n", ++md->trId);
 		if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 			hide_login_progress(gc, "Unable to request INF\n");
 			signoff(gc);
@@ -1077,7 +1072,7 @@
 			return;
 		}
 
-		g_snprintf(buf, sizeof(buf), "USR %d MD5 I %s\n", ++md->trId, gc->username);
+		g_snprintf(buf, sizeof(buf), "USR %d MD5 I %s\r\n", ++md->trId, gc->username);
 		if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 			hide_login_progress(gc, "Unable to send USR\n");
 			signoff(gc);
@@ -1101,7 +1096,7 @@
 		if (!g_strcasecmp(resp, "OK")) {
 			g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend);
 
-			g_snprintf(buf, sizeof(buf), "SYN %d 0\n", ++md->trId);
+			g_snprintf(buf, sizeof(buf), "SYN %d 0\r\n", ++md->trId);
 			if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 				hide_login_progress(gc, "Unable to write");
 				signoff(gc);
@@ -1194,7 +1189,7 @@
 		return;
 	}
 
-	g_snprintf(buf, sizeof(buf), "VER %d MSNP5\n", ++md->trId);
+	g_snprintf(buf, sizeof(buf), "VER %d MSNP5\r\n", ++md->trId);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Unable to write to server");
 		signoff(gc);
@@ -1244,7 +1239,7 @@
 	char buf[MSN_BUF_LEN];
 
 	if (ms) {
-		char *utf8;
+		char *utf8, *send;
 
 		if (ms->txqueue) {
 			debug_printf("appending to queue\n");
@@ -1252,7 +1247,9 @@
 			return 1;
 		}
 
-		utf8 = str_to_utf8(message);
+		send = add_cr(message);
+		utf8 = str_to_utf8(send);
+		g_free(send);
 		g_snprintf(buf, sizeof(buf), "MSG %d N %d\r\n%s%s", ++ms->trId,
 				strlen(MIME_HEADER) + strlen(utf8),
 				MIME_HEADER, utf8);
@@ -1261,7 +1258,7 @@
 			msn_kill_switch(ms);
 		debug_printf("\n");
 	} else if (strcmp(who, gc->username)) {
-		g_snprintf(buf, MSN_BUF_LEN, "XFR %d SB\n", ++md->trId);
+		g_snprintf(buf, MSN_BUF_LEN, "XFR %d SB\r\n", ++md->trId);
 		if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 			hide_login_progress(gc, "Write error");
 			signoff(gc);
@@ -1284,13 +1281,18 @@
 {
 	struct msn_switchboard *ms = msn_find_switch_by_id(gc, id);
 	char buf[MSN_BUF_LEN];
+	char *utf8, *send;
 
 	if (!ms)
 		return -EINVAL;
 
+	send = add_cr(message);
+	utf8 = str_to_utf8(send);
+	g_free(send);
 	g_snprintf(buf, sizeof(buf), "MSG %d N %d\r\n%s%s", ++ms->trId,
 			strlen(MIME_HEADER) + strlen(message),
-			MIME_HEADER, message);
+			MIME_HEADER, utf8);
+	g_free(utf8);
 	if (msn_write(ms->fd, buf, strlen(buf)) < 0) {
 		msn_kill_switch(ms);
 		return 0;
@@ -1308,7 +1310,7 @@
 	if (!ms)
 		return;
 
-	g_snprintf(buf, sizeof(buf), "CAL %d %s\n", ++ms->trId, who);
+	g_snprintf(buf, sizeof(buf), "CAL %d %s\r\n", ++ms->trId, who);
 	if (msn_write(ms->fd, buf, strlen(buf)) < 0)
 		msn_kill_switch(ms);
 }
@@ -1321,7 +1323,7 @@
 	if (!ms)
 		return;
 
-	g_snprintf(buf, sizeof(buf), "OUT\n");
+	g_snprintf(buf, sizeof(buf), "OUT\r\n");
 	if (msn_write(ms->fd, buf, strlen(buf)) < 0)
 		msn_kill_switch(ms);
 }
@@ -1376,7 +1378,7 @@
 	else
 		away = "NLN";
 
-	g_snprintf(buf, sizeof(buf), "CHG %d %s\n", ++md->trId, away);
+	g_snprintf(buf, sizeof(buf), "CHG %d %s\r\n", ++md->trId, away);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1392,9 +1394,9 @@
 	if (gc->away)
 		return;
 	if (idle)
-		g_snprintf(buf, sizeof(buf), "CHG %d IDL\n", ++md->trId);
+		g_snprintf(buf, sizeof(buf), "CHG %d IDL\r\n", ++md->trId);
 	else
-		g_snprintf(buf, sizeof(buf), "CHG %d NLN\n", ++md->trId);
+		g_snprintf(buf, sizeof(buf), "CHG %d NLN\r\n", ++md->trId);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1470,7 +1472,7 @@
 	if (l)
 		return;
 
-	g_snprintf(buf, sizeof(buf), "ADD %d FL %s %s\n", ++md->trId, who, who);
+	g_snprintf(buf, sizeof(buf), "ADD %d FL %s %s\r\n", ++md->trId, who, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1483,7 +1485,7 @@
 	struct msn_data *md = gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "REM %d FL %s\n", ++md->trId, who);
+	g_snprintf(buf, sizeof(buf), "REM %d FL %s\r\n", ++md->trId, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1497,7 +1499,7 @@
 	struct msn_data *md = gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "REA %d %s %s\n", ++md->trId, gc->username, url_encode(entry));
+	g_snprintf(buf, sizeof(buf), "REA %d %s %s\r\n", ++md->trId, gc->username, url_encode(entry));
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1534,7 +1536,7 @@
 	struct msn_data *md = gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "PNG\n");
+	g_snprintf(buf, sizeof(buf), "PNG\r\n");
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1549,9 +1551,9 @@
 	GSList *s;
 
 	if (gc->permdeny == PERMIT_ALL || gc->permdeny == DENY_SOME)
-		g_snprintf(buf, sizeof(buf), "BLP %d AL\n", ++md->trId);
+		g_snprintf(buf, sizeof(buf), "BLP %d AL\r\n", ++md->trId);
 	else
-		g_snprintf(buf, sizeof(buf), "BLP %d BL\n", ++md->trId);
+		g_snprintf(buf, sizeof(buf), "BLP %d BL\r\n", ++md->trId);
 
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
@@ -1576,7 +1578,7 @@
 	s = g_slist_nth(gc->permit, g_slist_length(md->permit));
 	while (s) {
 		char *who = s->data;
-		g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\n", ++md->trId, who, who);
+		g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\r\n", ++md->trId, who, who);
 		if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 			hide_login_progress(gc, "Write error");
 			signoff(gc);
@@ -1590,7 +1592,7 @@
 	s = g_slist_nth(gc->deny, g_slist_length(md->deny));
 	while (s) {
 		char *who = s->data;
-		g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\n", ++md->trId, who, who);
+		g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\r\n", ++md->trId, who, who);
 		if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 			hide_login_progress(gc, "Write error");
 			signoff(gc);
@@ -1607,7 +1609,7 @@
 	struct msn_data *md = gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\n", ++md->trId, who, who);
+	g_snprintf(buf, sizeof(buf), "ADD %d AL %s %s\r\n", ++md->trId, who, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1620,7 +1622,7 @@
 	struct msn_data *md = gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "REM %d AL %s\n", ++md->trId, who);
+	g_snprintf(buf, sizeof(buf), "REM %d AL %s\r\n", ++md->trId, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1633,7 +1635,7 @@
 	struct msn_data *md = gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "ADD %d BL %s %s\n", ++md->trId, who, who);
+	g_snprintf(buf, sizeof(buf), "ADD %d BL %s %s\r\n", ++md->trId, who, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1646,7 +1648,7 @@
 	struct msn_data *md = gc->proto_data;
 	char buf[MSN_BUF_LEN];
 
-	g_snprintf(buf, sizeof(buf), "REM %d BL %s\n", ++md->trId, who);
+	g_snprintf(buf, sizeof(buf), "REM %d BL %s\r\n", ++md->trId, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);