changeset 1275:de3339e2a0c4

[gaim-migrate @ 1285] Signing off w/ the MSN plugin should work now. It also ignores messages from teh Hotmail server :-D committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Thu, 14 Dec 2000 18:54:40 +0000
parents 32e819c194fd
children 3e19d163fc45
files STATUS plugins/msn/msn.c
diffstat 2 files changed, 49 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/STATUS	Thu Dec 14 17:26:54 2000 +0000
+++ b/STATUS	Thu Dec 14 18:54:40 2000 +0000
@@ -1,4 +1,4 @@
-STATUS of GAIM CVS tree. Last modified $Date: 2000-12-14 03:33:41 -0500 (Thu, 14 Dec 2000) $ by $Author: robflynn $.
+STATUS of GAIM CVS tree. Last modified $Date: 2000-12-14 13:54:40 -0500 (Thu, 14 Dec 2000) $ by $Author: robflynn $.
 
 This file is meant to provide gaim users who use the CVS version to see whether
 they actually want to compile what they just checked out. Gaim CVS is usually
@@ -98,7 +98,7 @@
 MSN
 ===
 
-MSN currently supports signing on, sending and receiving messages.  The
+MSN currently supports signing on/off, sending and receiving messages.  The
 buddylist is functional. When sending the initial message (to start a
 conversation) there will be a small delay.  It will appear as if the
 client has frozen.  This will not always be the case.  I have a fix
--- a/plugins/msn/msn.c	Thu Dec 14 17:26:54 2000 +0000
+++ b/plugins/msn/msn.c	Thu Dec 14 18:54:40 2000 +0000
@@ -367,6 +367,12 @@
 		int size;
 		int status;
 		
+		if (strcasecmp("hotmail", resps[1]) == 0) {
+			/* We want to ignore these */
+			g_strfreev(resps);
+			return;
+		}
+		
 		/* Determine our message size */
 		size = atoi(resps[3]);
 
@@ -682,6 +688,46 @@
 	g_free(buf);
 }
 
+void msn_close (struct gaim_connection *gc) {
+	struct msn_data *mdata = (struct msn_data *)gc->proto_data;
+	GSList *conns = msn_connections;
+	struct msn_conn *mc = NULL;
+	char buf[4096];
+
+	while (conns) {
+		mc = (struct msn_conn *)conns->data;
+
+		if (mc->inpa > 0)
+			gdk_input_remove(mc->inpa);
+
+		if (mc->fd > 0)
+			close(mc->fd);
+
+		if (mc->user != NULL)
+			g_free(mc->user);
+		
+		conns = g_slist_remove(conns, mc);
+		g_free(mc);
+	}
+
+
+	g_snprintf(buf, 4096, "OUT\n");
+	write(mdata->fd, buf, strlen(buf));
+	
+	if (gc->inpa > 0)
+		gdk_input_remove(gc->inpa);
+
+	close(mdata->fd);
+
+	if (mdata->friendly != NULL)
+		g_free(mdata->friendly);
+
+	g_free(gc->proto_data);
+
+	debug_printf(_("Signed off.\n"));
+	
+}
+
 static struct prpl *my_protocol = NULL;
 
 void msn_init(struct prpl *ret) {
@@ -691,7 +737,7 @@
 	ret->action_menu = NULL;
 	ret->user_opts = NULL;
 	ret->login = msn_login;
-	ret->close = NULL;
+	ret->close = msn_close;
 	ret->send_im = msn_send_im;
 	ret->set_info = NULL;
 	ret->get_info = NULL;