diff src/protocols/msn/switchboard.c @ 8583:fc27237783ee

[gaim-migrate @ 9333] Added Felipe Contreras's patch to reorganize and clean up the MSN protocol plugin. Thanks, and once again, apologies for the what must have seemed a never-ending delay. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Mon, 05 Apr 2004 07:11:24 +0000
parents 467b01d02f9c
children 1e211dde3cae
line wrap: on
line diff
--- a/src/protocols/msn/switchboard.c	Mon Apr 05 06:52:02 2004 +0000
+++ b/src/protocols/msn/switchboard.c	Mon Apr 05 07:11:24 2004 +0000
@@ -416,16 +416,12 @@
  * Connect stuff
  **************************************************************************/
 static gboolean
-connect_cb(gpointer data, gint source, GaimInputCondition cond)
+connect_cb(MsnServConn *servconn)
 {
-	MsnServConn *servconn = data;
 	GaimAccount *account = servconn->session->account;
 	MsnSwitchBoard *swboard = servconn->data;
 	char outparams[MSN_BUF_LEN];
 
-	if (servconn->fd != source)
-		servconn->fd = source;
-
 	swboard->in_use = TRUE;
 
 	gaim_debug(GAIM_DEBUG_INFO, "msn", "Connecting to switchboard...\n");
@@ -456,11 +452,13 @@
 }
 
 static void
-failed_read_cb(gpointer data, gint source, GaimInputCondition cond)
+disconnect_cb(MsnServConn *servconn)
 {
-	MsnServConn *servconn = data;
+	MsnSwitchBoard *swboard;
 
-	msn_switchboard_destroy(servconn->data);
+	swboard = servconn->data;
+	if (!swboard->destroying)
+		msn_switchboard_destroy(swboard);
 }
 
 MsnSwitchBoard *
@@ -475,7 +473,7 @@
 
 	swboard->servconn = servconn = msn_servconn_new(session);
 	msn_servconn_set_connect_cb(servconn, connect_cb);
-	msn_servconn_set_failed_read_cb(servconn, failed_read_cb);
+	msn_servconn_set_disconnect_cb(servconn, disconnect_cb);
 
 	if (session->http_method)
 		swboard->servconn->http_data->server_type = "SB";
@@ -533,7 +531,9 @@
 	MsnSession *session;
 
 	g_return_if_fail(swboard != NULL);
+	g_return_if_fail(!swboard->destroying);
 
+	swboard->destroying = TRUE;
 	session = swboard->servconn->session;
 
 	if (swboard->servconn->connected)
@@ -627,13 +627,11 @@
 }
 
 gboolean
-msn_switchboard_connect(MsnSwitchBoard *swboard, const char *server, int port)
+msn_switchboard_connect(MsnSwitchBoard *swboard, const char *host, int port)
 {
 	g_return_val_if_fail(swboard != NULL, FALSE);
 
-	msn_servconn_set_server(swboard->servconn, server, port);
-
-	if (msn_servconn_connect(swboard->servconn))
+	if (msn_servconn_connect(swboard->servconn, host, port))
 		swboard->in_use = TRUE;
 
 	return swboard->in_use;