changeset 9199:d1fd3de2feca

[gaim-migrate @ 9994] You know, I should have removed these now unused files BEFORE doing the copyright updates. Yeah. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 06 Jun 2004 03:45:22 +0000
parents ab6636c5a136
children 63a122026f26
files src/protocols/msn/Makefile.am src/protocols/msn/dispatch.c src/protocols/msn/dispatch.h src/protocols/msn/ft.c src/protocols/msn/msnobject.c src/protocols/msn/msnobject.h src/protocols/msn/msnslp.c src/protocols/msn/msnslp.h
diffstat 8 files changed, 4 insertions(+), 1992 deletions(-) [+]
line wrap: on
line diff
--- a/src/protocols/msn/Makefile.am	Sun Jun 06 03:42:55 2004 +0000
+++ b/src/protocols/msn/Makefile.am	Sun Jun 06 03:45:22 2004 +0000
@@ -22,10 +22,10 @@
 	msg.h \
 	msn.c \
 	msn.h \
+	nexus.c \
+	nexus.h \
 	notification.c \
 	notification.h \
-	nexus.c \
-	nexus.h \
 	object.c \
 	object.h \
 	page.c \
@@ -50,10 +50,10 @@
 	switchboard.h \
 	sync.c \
 	sync.h \
+	table.c \
+	table.h \
 	transaction.c \
 	transaction.h \
-	table.c \
-	table.h \
 	user.c \
 	user.h \
 	userlist.c \
--- a/src/protocols/msn/dispatch.c	Sun Jun 06 03:42:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-/**
- * @file dispatch.c Dispatch server functions
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#include "msn.h"
-#include "dispatch.h"
-#include "notification.h"
-#include "error.h"
-
-static GHashTable *dispatch_commands = NULL;
-
-static gboolean
-cvr_cmd(MsnServConn *servconn, const char *command, const char **params,
-		size_t param_count)
-{
-	GaimAccount *account = servconn->session->account;
-	GaimConnection *gc = gaim_account_get_connection(account);
-	char outparams[MSN_BUF_LEN];
-
-	g_snprintf(outparams, sizeof(outparams),
-			   "TWN I %s", gaim_account_get_username(account));
-
-	if (!msn_servconn_send_command(servconn, "USR", outparams))
-	{
-		gaim_connection_error(gc, _("Unable to request USR\n"));
-
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-static gboolean
-inf_cmd(MsnServConn *servconn, const char *command, const char **params,
-		size_t param_count)
-{
-	GaimAccount *account = servconn->session->account;
-	GaimConnection *gc = gaim_account_get_connection(account);
-	char outparams[MSN_BUF_LEN];
-
-	if (strcmp(params[1], "MD5")) {
-		gaim_connection_error(gc, _("Unable to login using MD5"));
-
-		return FALSE;
-	}
-
-	g_snprintf(outparams, sizeof(outparams), "MD5 I %s",
-			   gaim_account_get_username(account));
-
-	if (!msn_servconn_send_command(servconn, "USR", outparams)) {
-		gaim_connection_error(gc, _("Unable to send USR"));
-
-		return FALSE;
-	}
-
-	gaim_connection_update_progress(gc, _("Requesting to send password"),
-									3, MSN_CONNECT_STEPS);
-
-	return TRUE;
-}
-
-static gboolean
-ver_cmd(MsnServConn *servconn, const char *command, const char **params,
-		size_t param_count)
-{
-	MsnSession *session = servconn->session;
-	GaimAccount *account = session->account;
-	GaimConnection *gc = gaim_account_get_connection(account);
-	gboolean protocol_supported = FALSE;
-	char outparams[MSN_BUF_LEN];
-	char proto_str[8];
-	size_t i;
-
-	g_snprintf(proto_str, sizeof(proto_str), "MSNP%d", session->protocol_ver);
-
-	for (i = 1; i < param_count; i++)
-	{
-		if (!strcmp(params[i], proto_str))
-		{
-			protocol_supported = TRUE;
-			break;
-		}
-	}
-
-	if (!protocol_supported)
-	{
-		gaim_connection_error(gc, _("Protocol version not supported"));
-
-		return FALSE;
-	}
-
-	if (session->protocol_ver >= 8)
-	{
-		g_snprintf(outparams, sizeof(outparams),
-				   "0x0409 winnt 5.1 i386 MSNMSGR 6.0.0602 MSMSGS %s",
-				   gaim_account_get_username(account));
-
-		if (!msn_servconn_send_command(servconn, "CVR", outparams))
-		{
-			gaim_connection_error(gc, _("Unable to request CVR\n"));
-
-			return FALSE;
-		}
-	}
-	else
-	{
-		if (!msn_servconn_send_command(servconn, "INF", NULL))
-		{
-			gaim_connection_error(gc, _("Unable to request INF\n"));
-
-			return FALSE;
-		}
-	}
-
-	return TRUE;
-}
-
-static gboolean
-xfr_cmd(MsnServConn *servconn, const char *command, const char **params,
-		size_t param_count)
-{
-	MsnSession *session = servconn->session;
-	GaimConnection *gc = servconn->session->account->gc;
-	char *host;
-	int port;
-	char *c;
-
-	if (param_count < 2 || strcmp(params[1], "NS"))
-	{
-		gaim_connection_error(gc, _("Got invalid XFR"));
-
-		return FALSE;
-	}
-
-	host = g_strdup(params[2]);
-
-	if ((c = strchr(host, ':')) != NULL)
-	{
-		*c = '\0';
-
-		port = atoi(c + 1);
-	}
-	else
-		port = 1863;
-
-	session->passport_info.sl = time(NULL);
-
-	/* Disconnect from here. */
-	msn_servconn_destroy(servconn);
-	session->dispatch_conn = NULL;
-
-	/* Reset our transaction ID. */
-	session->trId = 0;
-
-	/* Now connect to the switchboard. */
-	session->notification_conn = msn_notification_new(session, host, port);
-
-	g_free(host);
-
-	if (!msn_servconn_connect(session->notification_conn))
-		gaim_connection_error(gc, _("Unable to transfer"));
-
-	return FALSE;
-}
-
-static gboolean
-unknown_cmd(MsnServConn *servconn, const char *command, const char **params,
-			size_t param_count)
-{
-	GaimConnection *gc = servconn->session->account->gc;
-
-	if (isdigit(*command))
-		gaim_connection_error(gc, msn_error_get_text(atoi(command)));
-	else
-		gaim_connection_error(gc, _("Unable to parse message."));
-
-	return FALSE;
-}
-
-static gboolean
-connect_cb(gpointer data, gint source, GaimInputCondition cond)
-{
-	MsnServConn *dispatch = data;
-	MsnSession *session = dispatch->session;
-	GaimConnection *gc = session->account->gc;
-	char proto_vers[256];
-	size_t i;
-
-	if (source == -1)
-	{
-		gaim_connection_error(session->account->gc, _("Unable to connect."));
-		return FALSE;
-	}
-
-	gaim_connection_update_progress(gc, _("Connecting"), 1, MSN_CONNECT_STEPS);
-
-	if (dispatch->fd != source)
-		dispatch->fd = source;
-
-	proto_vers[0] = '\0';
-
-	for (i = 7; i <= session->protocol_ver; i++)
-	{
-		char old_buf[256];
-
-		strcpy(old_buf, proto_vers);
-
-		g_snprintf(proto_vers, sizeof(proto_vers), "MSNP%d %s", (int)i, old_buf);
-	}
-
-	strncat(proto_vers, "CVR0", sizeof(proto_vers));
-
-	if (!msn_servconn_send_command(dispatch, "VER", proto_vers))
-	{
-		gaim_connection_error(gc, _("Unable to write to server"));
-		return FALSE;
-	}
-
-	gaim_connection_update_progress(gc, _("Syncing with server"),
-									2, MSN_CONNECT_STEPS);
-
-	return TRUE;
-}
-
-static void
-failed_read_cb(gpointer data, gint source, GaimInputCondition cond)
-{
-	MsnServConn *dispatch = data;
-	GaimConnection *gc;
-
-	gc = dispatch->session->account->gc;
-
-	gaim_connection_error(gc, _("Error reading from server"));
-}
-
-MsnServConn *
-msn_dispatch_new(MsnSession *session, const char *server, int port)
-{
-	MsnServConn *dispatch;
-
-	dispatch = msn_servconn_new(session);
-
-	msn_servconn_set_server(dispatch, server, port);
-	msn_servconn_set_connect_cb(dispatch, connect_cb);
-	msn_servconn_set_failed_read_cb(dispatch, failed_read_cb);
-
-	if (dispatch_commands == NULL) {
-		/* Register the command callbacks. */
-
-		msn_servconn_register_command(dispatch, "CVR",       cvr_cmd);
-		msn_servconn_register_command(dispatch, "INF",       inf_cmd);
-		msn_servconn_register_command(dispatch, "VER",       ver_cmd);
-		msn_servconn_register_command(dispatch, "XFR",       xfr_cmd);
-		msn_servconn_register_command(dispatch, "_UNKNOWN_", unknown_cmd);
-
-		/* Save this for future use. */
-		dispatch_commands = dispatch->commands;
-	}
-	else {
-		g_hash_table_destroy(dispatch->commands);
-
-		dispatch->commands = dispatch_commands;
-	}
-
-	return dispatch;
-}
-
--- a/src/protocols/msn/dispatch.h	Sun Jun 06 03:42:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/**
- * @file dispatch.h Dispatch server functions
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#ifndef _MSN_DISPATCH_H_
-#define _MSN_DISPATCH_H_
-
-#include "session.h"
-#include "servconn.h"
-
-MsnServConn *msn_dispatch_new(MsnSession *session, const char *server,
-							  int port);
-
-#endif /* _MSN_DISPATCH_H_ */
--- a/src/protocols/msn/ft.c	Sun Jun 06 03:42:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,522 +0,0 @@
-/**
- * @file msn.c The MSN protocol plugin
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-#include "msn.h"
-
-static struct gaim_xfer *
-find_xfer_by_cookie(GaimConnection *gc, unsigned long cookie)
-{
-	GSList *g;
-	struct msn_data *md = (struct msn_data *)gc->proto_data;
-	struct gaim_xfer *xfer = NULL;
-	struct msn_xfer_data *xfer_data;
-
-	for (g = md->file_transfers; g != NULL; g = g->next) {
-		xfer = (struct gaim_xfer *)g->data;
-		xfer_data = (struct msn_xfer_data *)xfer->data;
-
-		if (xfer_data->cookie == cookie)
-			break;
-
-		xfer = NULL;
-	}
-
-	return xfer;
-}
-
-static void
-msn_xfer_init(struct gaim_xfer *xfer)
-{
-	GaimAccount *account;
-	struct msn_xfer_data *xfer_data;
-	struct msn_switchboard *ms;
-	char header[MSN_BUF_LEN];
-	char buf[MSN_BUF_LEN];
-
-	account = gaim_xfer_get_account(xfer);
-
-	ms = msn_find_switch(account->gc, xfer->who);
-
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-
-	if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
-		/*
-		 * NOTE: We actually have to wait for the next Invitation message
-		 *       before the transfer starts. We handle that in
-		 *       msn_xfer_start().
-		 */
-
-		g_snprintf(header, sizeof(header),
-				   "MIME-Version: 1.0\r\n"
-				   "Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n\r\n"
-				   "Invitation-Command: ACCEPT\r\n"
-				   "Invitation-Cookie: %lu\r\n"
-				   "Launch-Application: FALSE\r\n"
-				   "Request-Data: IP-Address:\r\n",
-				   (unsigned long)xfer_data->cookie);
-
-		g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s\r\n\r\n",
-				   ++ms->trId, strlen(header) + strlen("\r\n\r\n"),
-				   header);
-
-		if (msn_write(ms->fd, buf, strlen(buf)) < 0) {
-			msn_kill_switch(ms);
-			gaim_xfer_destroy(xfer);
-
-			return;
-		}
-	}
-}
-
-static void
-msn_xfer_start(struct gaim_xfer *xfer)
-{
-	struct msn_xfer_data *xfer_data;
-
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-
-	xfer_data->transferring = TRUE;
-
-	if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
-		char sendbuf[MSN_BUF_LEN];
-
-		/* Send the TFR string to request the start of a transfer. */
-		g_snprintf(sendbuf, sizeof(sendbuf), "TFR\r\n");
-
-		if (msn_write(xfer->fd, sendbuf, strlen(sendbuf)) < 0) {
-			gaim_xfer_cancel_remote(xfer);
-		}
-	}
-}
-
-static void
-msn_xfer_end(struct gaim_xfer *xfer)
-{
-	GaimAccount *account;
-	struct msn_xfer_data *xfer_data;
-	struct msn_data *md;
-
-	account   = gaim_xfer_get_account(xfer);
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-	md        = (struct msn_data *)account->gc->proto_data;
-
-	if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
-		char sendbuf[MSN_BUF_LEN];
-
-		g_snprintf(sendbuf, sizeof(sendbuf), "BYE 16777989\r\n");
-
-		msn_write(xfer->fd, sendbuf, strlen(sendbuf));
-
-		md->file_transfers = g_slist_remove(md->file_transfers, xfer);
-
-		g_free(xfer_data);
-		xfer->data = NULL;
-	}
-}
-
-static void
-msn_xfer_cancel_send(struct gaim_xfer *xfer)
-{
-	GaimAccount *account;
-	struct msn_xfer_data *xfer_data;
-	struct msn_data *md;
-
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-
-	xfer_data->do_cancel = TRUE;
-
-	account   = gaim_xfer_get_account(xfer);
-	md        = (struct msn_data *)account->gc->proto_data;
-
-	md->file_transfers = g_slist_remove(md->file_transfers, xfer);
-
-	g_free(xfer_data);
-	xfer->data = NULL;
-}
-
-static void
-msn_xfer_cancel_recv(struct gaim_xfer *xfer)
-{
-	GaimAccount *account;
-	struct msn_xfer_data *xfer_data;
-	struct msn_data *md;
-
-	account   = gaim_xfer_get_account(xfer);
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-	md        = (struct msn_data *)account->gc->proto_data;
-
-	md->file_transfers = g_slist_remove(md->file_transfers, xfer);
-
-	g_free(xfer_data);
-	xfer->data = NULL;
-}
-
-static size_t
-msn_xfer_read(char **buffer, struct gaim_xfer *xfer)
-{
-	struct msn_xfer_data *xfer_data;
-	unsigned char header[3];
-	size_t len, size;
-
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-
-	if (xfer_data->do_cancel)
-	{
-		write(xfer->fd, "CCL\n", 4);
-
-		return 0;
-	}
-
-	if (read(xfer->fd, header, sizeof(header)) < 3) {
-		gaim_xfer_set_completed(xfer, TRUE);
-		return 0;
-	}
-
-	if (header[0] != 0) {
-		gaim_debug(GAIM_DEBUG_ERROR, "msn",
-				   "MSNFTP: Invalid header[0]: %d. Aborting.\n",
-				   header[0]);
-		return 0;
-	}
-
-	size = header[1] | (header[2] << 8);
-
-	*buffer = g_new0(char, size);
-
-	for (len = 0;
-		 len < size;
-		 len += read(xfer->fd, *buffer + len, size - len))
-		;
-
-	if (len == 0)
-		gaim_xfer_set_completed(xfer, TRUE);
-
-	return len;
-}
-
-static size_t
-msn_xfer_write(const char *buffer, size_t size, struct gaim_xfer *xfer)
-{
-	GaimAccount *account;
-	struct msn_xfer_data *xfer_data;
-	struct msn_data *md;
-	unsigned char header[3];
-
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-	account   = gaim_xfer_get_account(xfer);
-	md        = (struct msn_data *)account->gc->proto_data;
-
-	if (xfer_data->do_cancel)
-	{
-		header[0] = 1;
-		header[1] = 0;
-		header[2] = 0;
-
-		if (write(xfer->fd, header, sizeof(header)) < 3) {
-			gaim_xfer_cancel_remote(xfer);
-			return 0;
-		}
-	}
-	else
-	{
-		/* Not implemented yet. */
-	}
-
-	return 0;
-}
-
-static int
-msn_process_msnftp(struct gaim_xfer *xfer, gint source, const char *buf)
-{
-	struct msn_xfer_data *xfer_data;
-	GaimAccount *account;
-	char sendbuf[MSN_BUF_LEN];
-
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-	account = gaim_xfer_get_account(xfer);
-
-	if (!g_ascii_strncasecmp(buf, "VER MSNFTP", 10)) {
-		/* Send the USR string */
-		g_snprintf(sendbuf, sizeof(sendbuf), "USR %s %lu\r\n",
-				   account->gc->username,
-				   (unsigned long)xfer_data->authcookie);
-
-		if (msn_write(source, sendbuf, strlen(sendbuf)) < 0) {
-			gaim_xfer_cancel_remote(xfer); /* ? */
-
-			return 0;
-		}
-	}
-	else if (!g_ascii_strncasecmp(buf, "FIL", 3)) {
-		gaim_input_remove(xfer_data->inpa);
-		xfer_data->inpa = 0;
-
-		gaim_xfer_start(xfer, source, NULL, 0);
-	}
-#if 0
-		char *tmp = buf;
-
-		/*
-		 * This data is the size, but we already have
-		 * the size, so who cares.
-		 */
-		GET_NEXT(tmp);
-
-		/* Send the TFR string to request the start of a transfer. */
-		g_snprintf(sendbuf, sizeof(sendbuf), "TFR\r\n");
-
-
-		if (msn_write(source, sendbuf, strlen(sendbuf)) < 0) {
-			gaim_xfer_cancel(xfer);
-
-			return 0;
-		}
-#endif
-
-	return 1;
-}
-
-static void
-msn_msnftp_cb(gpointer data, gint source, GaimInputCondition cond)
-{
-	struct gaim_xfer *xfer;
-	struct msn_xfer_data *xfer_data;
-	char buf[MSN_BUF_LEN];
-	gboolean cont = TRUE;
-	size_t len;
-
-	xfer = (struct gaim_xfer *)data;
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-
-	len = read(source, buf, sizeof(buf));
-
-	if (len <= 0) {
-		gaim_xfer_cancel_remote(xfer);
-		return;
-	}
-
-	xfer_data->rxqueue = g_realloc(xfer_data->rxqueue,
-								   len + xfer_data->rxlen);
-	memcpy(xfer_data->rxqueue + xfer_data->rxlen, buf, len);
-	xfer_data->rxlen += len;
-
-	while (cont) {
-		char *end = xfer_data->rxqueue;
-		char *cmd;
-		int cmdlen;
-		int i = 0;
-
-		if (!xfer_data->rxlen)
-			return;
-
-		for (i = 0; i < xfer_data->rxlen - 1; end++, i++) {
-			if (*end == '\r' && *(end + 1) == '\n')
-				break;
-		}
-
-		if (i == xfer_data->rxlen - 1)
-			return;
-
-		cmdlen = end - xfer_data->rxqueue + 2;
-		cmd = xfer_data->rxqueue;
-
-		xfer_data->rxlen -= cmdlen;
-
-		if (xfer_data->rxlen)
-			xfer_data->rxqueue = g_memdup(cmd + cmdlen, xfer_data->rxlen);
-		else {
-			xfer_data->rxqueue = NULL;
-			cmd = g_realloc(cmd, cmdlen + 1);
-		}
-
-		cmd[cmdlen] = '\0';
-
-		g_strchomp(cmd);
-
-		cont = msn_process_msnftp(xfer, source, cmd);
-
-		g_free(cmd);
-	}
-}
-
-static void
-msn_msnftp_connect(gpointer data, gint source, GaimInputCondition cond)
-{
-	GaimAccount *account;
-	struct gaim_xfer *xfer;
-	struct msn_xfer_data *xfer_data;
-	char buf[MSN_BUF_LEN];
-
-	xfer      = (struct gaim_xfer *)data;
-	account   = gaim_xfer_get_account(xfer);
-	xfer_data = (struct msn_xfer_data *)xfer->data;
-
-	if (source == -1 || !g_slist_find(gaim_connections_get_all(), account->gc)) {
-		gaim_debug(GAIM_DEBUG_ERROR, "msn",
-				   "MSNFTP: Error establishing connection\n");
-		close(source);
-
-		gaim_xfer_cancel_remote(xfer);
-
-		return;
-	}
-
-	g_snprintf(buf, sizeof(buf), "VER MSNFTP\r\n");
-
-	if (msn_write(source, buf, strlen(buf)) < 0) {
-		gaim_xfer_cancel_remote(xfer);
-		return;
-	}
-
-	xfer_data->inpa = gaim_input_add(source, GAIM_INPUT_READ,
-									 msn_msnftp_cb, xfer);
-}
-
-void
-msn_process_ft_msg(struct msn_switchboard *ms, char *msg)
-{
-	struct gaim_xfer *xfer;
-	struct msn_xfer_data *xfer_data;
-	struct msn_data *md = ms->gc->proto_data;
-	char *tmp = msg;
-
-	if (strstr(msg, "Application-GUID: " MSN_FT_GUID) &&
-		strstr(msg, "Invitation-Command: INVITE")) {
-
-		/*
-		 * First invitation message, requesting an ACCEPT or CANCEL from
-		 * the recipient. Used in incoming file transfers.
-		 */
-
-		char *filename;
-		char *cookie_s, *filesize_s;
-
-		tmp = strstr(msg, "Invitation-Cookie");
-		GET_NEXT(tmp);
-		cookie_s = tmp;
-		GET_NEXT(tmp);
-		GET_NEXT(tmp);
-		filename = tmp;
-
-		/* Needed for filenames with spaces */
-		tmp = strchr(tmp, '\r');
-		*tmp = '\0';
-		tmp += 2;
-
-		GET_NEXT(tmp);
-		filesize_s = tmp;
-		GET_NEXT(tmp);
-
-		/* Setup the MSN-specific file transfer data */
-		xfer_data = g_new0(struct msn_xfer_data, 1);
-		xfer_data->cookie = atoi(cookie_s);
-		xfer_data->transferring = FALSE;
-
-		/* Build the file transfer handle. */
-		xfer = gaim_xfer_new(ms->gc->account, GAIM_XFER_RECEIVE, ms->msguser);
-		xfer->data = xfer_data;
-
-		/* Set the info about the incoming file. */
-		gaim_xfer_set_filename(xfer, filename);
-		gaim_xfer_set_size(xfer, atoi(filesize_s));
-
-		/* Setup our I/O op functions */
-		gaim_xfer_set_init_fnc(xfer,        msn_xfer_init);
-		gaim_xfer_set_start_fnc(xfer,       msn_xfer_start);
-		gaim_xfer_set_end_fnc(xfer,         msn_xfer_end);
-		gaim_xfer_set_cancel_send_fnc(xfer, msn_xfer_cancel_send);
-		gaim_xfer_set_cancel_recv_fnc(xfer, msn_xfer_cancel_recv);
-		gaim_xfer_set_read_fnc(xfer,        msn_xfer_read);
-		gaim_xfer_set_write_fnc(xfer,       msn_xfer_write);
-
-		/* Keep track of this transfer for later. */
-		md->file_transfers = g_slist_append(md->file_transfers, xfer);
-
-		/* Now perform the request */
-		gaim_xfer_request(xfer);
-	}
-	else if (strstr(msg, "Invitation-Command: ACCEPT")) {
-
-		/*
-		 * XXX I hope these checks don't return false positives, but they
-		 *     seem like they should work. The only issue is alternative
-		 *     protocols, *maybe*.
-		 */
-
-		if (strstr(msg, "AuthCookie:")) {
-
-			/*
-			 * Second invitation request, sent after the recipient accepts
-			 * the request. Used in incoming file transfers.
-			 */
-			char *cookie_s, *ip, *port_s, *authcookie_s;
-			char ip_s[16];
-
-			tmp = strstr(msg, "Invitation-Cookie");
-			GET_NEXT(tmp);
-			cookie_s = tmp;
-			GET_NEXT(tmp);
-			GET_NEXT(tmp);
-			ip = tmp;
-			GET_NEXT(tmp);
-			GET_NEXT(tmp);
-			port_s = tmp;
-			GET_NEXT(tmp);
-			GET_NEXT(tmp);
-			authcookie_s = tmp;
-			GET_NEXT(tmp);
-
-			xfer = find_xfer_by_cookie(ms->gc, atoi(cookie_s));
-
-			if (xfer == NULL)
-			{
-				gaim_debug(GAIM_DEBUG_ERROR, "msn",
-						   "MSNFTP : Cookie not found. "
-						   "File transfer aborted.\n");
-				return;
-			}
-
-			xfer_data = (struct msn_xfer_data *)xfer->data;
-			xfer_data->authcookie = atol(authcookie_s);
-
-			strncpy(ip_s, ip, sizeof(ip_s));
-
-			if (gaim_proxy_connect(xfer->account, ip_s, atoi(port_s),
-							  msn_msnftp_connect, xfer) != 0) {
-
-				gaim_xfer_cancel_remote(xfer);
-
-				return;
-			}
-		}
-		else
-		{
-			/*
-			 * An accept message from the recipient. Used in outgoing
-			 * file transfers.
-			 */
-		}
-	}
-}
-
--- a/src/protocols/msn/msnobject.c	Sun Jun 06 03:42:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/**
- * @file msnobject.c MSNObject API
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#include "msnobject.h"
-
-#define GET_STRING_TAG(field, id) \
-	if ((tag = strstr(str, id "=\"")) != NULL) \
-	{ \
-		tag += strlen(id "=\""); \
-		c = strchr(tag, '"'); \
-		if (c != NULL) \
-			obj->field = g_strndup(tag, c - tag); \
-	}
-
-#define GET_INT_TAG(field, id) \
-	if ((tag = strstr(str, id "=\"")) != NULL) \
-	{ \
-		char buf[16]; \
-		tag += strlen(id "=\""); \
-		c = strchr(tag, '"'); \
-		if (c != NULL) \
-		{ \
-			strncpy(buf, tag, c - tag); \
-			buf[c - tag] = '\0'; \
-			obj->field = atoi(buf); \
-		} \
-	}
-
-MsnObject *
-msn_object_new(void)
-{
-	MsnObject *obj;
-
-	obj = g_new0(MsnObject, 1);
-
-	msn_object_set_type(obj, MSN_OBJECT_UNKNOWN);
-	msn_object_set_friendly(obj, "AAA=");
-
-	return obj;
-}
-
-MsnObject *
-msn_object_new_from_string(const char *str)
-{
-	MsnObject *obj;
-	char *tag, *c;
-
-	g_return_val_if_fail(str != NULL, NULL);
-	g_return_val_if_fail(!strncmp(str, "<msnobj ", 8), NULL);
-
-	obj = msn_object_new();
-
-	GET_STRING_TAG(creator,  "Creator");
-	GET_INT_TAG(size,        "Size");
-	GET_INT_TAG(type,        "Type");
-	GET_STRING_TAG(location, "Location");
-	GET_STRING_TAG(friendly, "Friendly");
-	GET_STRING_TAG(sha1d,    "SHA1D");
-	GET_STRING_TAG(sha1c,    "SHA1C");
-
-	return obj;
-}
-
-void
-msn_object_destroy(MsnObject *obj)
-{
-	g_return_if_fail(obj != NULL);
-
-	if (obj->creator != NULL)
-		g_free(obj->creator);
-
-	if (obj->location != NULL)
-		g_free(obj->location);
-
-	if (obj->friendly != NULL)
-		g_free(obj->friendly);
-
-	if (obj->sha1d != NULL)
-		g_free(obj->sha1d);
-
-	if (obj->sha1c != NULL)
-		g_free(obj->sha1c);
-
-	g_free(obj);
-}
-
-char *
-msn_object_to_string(const MsnObject *obj)
-{
-	char *str;
-
-	g_return_val_if_fail(obj != NULL, NULL);
-
-	str = g_strdup_printf("<msnobj Creator=\"%s\" Size=\"%d\" Type=\"%d\" "
-						  "Location=\"%s\" Friendly=\"%s\" SHA1D=\"%s\" "
-						  "SHA1C=\"%s\"/>",
-						  msn_object_get_creator(obj),
-						  msn_object_get_size(obj),
-						  msn_object_get_type(obj),
-						  msn_object_get_location(obj),
-						  msn_object_get_friendly(obj),
-						  msn_object_get_sha1d(obj),
-						  msn_object_get_sha1c(obj));
-
-	return str;
-}
-
-void
-msn_object_set_creator(MsnObject *obj, const char *creator)
-{
-	g_return_if_fail(obj != NULL);
-
-	if (obj->creator != NULL)
-		g_free(obj->creator);
-
-	obj->creator = (creator == NULL ? NULL : g_strdup(creator));
-}
-
-void
-msn_object_set_size(MsnObject *obj, int size)
-{
-	g_return_if_fail(obj != NULL);
-
-	obj->size = size;
-}
-
-void
-msn_object_set_type(MsnObject *obj, MsnObjectType type)
-{
-	g_return_if_fail(obj != NULL);
-
-	obj->type = type;
-}
-
-void
-msn_object_set_location(MsnObject *obj, const char *location)
-{
-	g_return_if_fail(obj != NULL);
-
-	if (obj->location != NULL)
-		g_free(obj->location);
-
-	obj->location = (location == NULL ? NULL : g_strdup(location));
-}
-
-void
-msn_object_set_friendly(MsnObject *obj, const char *friendly)
-{
-	g_return_if_fail(obj != NULL);
-
-	if (obj->friendly != NULL)
-		g_free(obj->friendly);
-
-	obj->friendly = (friendly == NULL ? NULL : g_strdup(friendly));
-}
-
-void
-msn_object_set_sha1d(MsnObject *obj, const char *sha1d)
-{
-	g_return_if_fail(obj != NULL);
-
-	if (obj->sha1d != NULL)
-		g_free(obj->sha1d);
-
-	obj->sha1d = (sha1d == NULL ? NULL : g_strdup(sha1d));
-}
-
-void
-msn_object_set_sha1c(MsnObject *obj, const char *sha1c)
-{
-	g_return_if_fail(obj != NULL);
-
-	if (obj->sha1c != NULL)
-		g_free(obj->sha1c);
-
-	obj->sha1c = (sha1c == NULL ? NULL : g_strdup(sha1c));
-}
-
-const char *
-msn_object_get_creator(const MsnObject *obj)
-{
-	g_return_val_if_fail(obj != NULL, NULL);
-
-	return obj->creator;
-}
-
-int
-msn_object_get_size(const MsnObject *obj)
-{
-	g_return_val_if_fail(obj != NULL, 0);
-
-	return obj->size;
-}
-
-MsnObjectType
-msn_object_get_type(const MsnObject *obj)
-{
-	g_return_val_if_fail(obj != NULL, MSN_OBJECT_UNKNOWN);
-
-	return obj->type;
-}
-
-const char *
-msn_object_get_location(const MsnObject *obj)
-{
-	g_return_val_if_fail(obj != NULL, NULL);
-
-	return obj->location;
-}
-
-const char *
-msn_object_get_friendly(const MsnObject *obj)
-{
-	g_return_val_if_fail(obj != NULL, NULL);
-
-	return obj->friendly;
-}
-
-const char *
-msn_object_get_sha1d(const MsnObject *obj)
-{
-	g_return_val_if_fail(obj != NULL, NULL);
-
-	return obj->sha1d;
-}
-
-const char *
-msn_object_get_sha1c(const MsnObject *obj)
-{
-	g_return_val_if_fail(obj != NULL, NULL);
-
-	return obj->sha1c;
-}
--- a/src/protocols/msn/msnobject.h	Sun Jun 06 03:42:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/**
- * @file msnobject.h MSNObject API
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#ifndef _MSN_OBJECT_H_
-#define _MSN_OBJECT_H_
-
-#include "internal.h"
-
-typedef enum
-{
-	MSN_OBJECT_UNKNOWN    = -1, /**< Unknown object        */
-	MSN_OBJECT_RESERVED1  =  1, /**< Reserved              */
-	MSN_OBJECT_EMOTICON   =  2, /**< Custom Emoticon       */
-	MSN_OBJECT_USERTILE   =  3, /**< UserTile (buddy icon) */
-	MSN_OBJECT_RESERVED2  =  4, /**< Reserved              */
-	MSN_OBJECT_BACKGROUND =  5  /**< Background            */
-
-} MsnObjectType;
-
-typedef struct
-{
-	char *creator;
-	int size;
-	MsnObjectType type;
-	char *location;
-	char *friendly;
-	char *sha1d;
-	char *sha1c;
-
-} MsnObject;
-
-/**
- * Creates a MsnObject structure.
- *
- * @return A new MsnObject structure.
- */
-MsnObject *msn_object_new(void);
-
-/**
- * Creates a MsnObject structure from a string.
- *
- * @param str The string.
- *
- * @return The new MsnObject structure.
- */
-MsnObject *msn_object_new_from_string(const char *str);
-
-/**
- * Destroys an MsnObject structure.
- *
- * @param obj The object structure.
- */
-void msn_object_destroy(MsnObject *obj);
-
-/**
- * Outputs a string representation of an MsnObject.
- *
- * @param obj The object.
- *
- * @return The string representation. This must be freed.
- */
-char *msn_object_to_string(const MsnObject *obj);
-
-/**
- * Sets the creator field in a MsnObject.
- *
- * @param creator The creator value.
- */
-void msn_object_set_creator(MsnObject *obj, const char *creator);
-
-/**
- * Sets the size field in a MsnObject.
- *
- * @param size The size value.
- */
-void msn_object_set_size(MsnObject *obj, int size);
-
-/**
- * Sets the type field in a MsnObject.
- *
- * @param type The type value.
- */
-void msn_object_set_type(MsnObject *obj, MsnObjectType type);
-
-/**
- * Sets the location field in a MsnObject.
- *
- * @param location The location value.
- */
-void msn_object_set_location(MsnObject *obj, const char *location);
-
-/**
- * Sets the friendly name field in a MsnObject.
- *
- * @param friendly The friendly name value.
- */
-void msn_object_set_friendly(MsnObject *obj, const char *friendly);
-
-/**
- * Sets the SHA1D field in a MsnObject.
- *
- * @param sha1d The sha1d value.
- */
-void msn_object_set_sha1d(MsnObject *obj, const char *sha1d);
-
-/**
- * Sets the SHA1C field in a MsnObject.
- *
- * @param sha1c The sha1c value.
- */
-void msn_object_set_sha1c(MsnObject *obj, const char *sha1c);
-
-/**
- * Returns a MsnObject's creator value.
- *
- * @param obj The object.
- *
- * @return The creator value.
- */
-const char *msn_object_get_creator(const MsnObject *obj);
-
-/**
- * Returns a MsnObject's size value.
- *
- * @param obj The object.
- *
- * @return The size value.
- */
-int msn_object_get_size(const MsnObject *obj);
-
-/**
- * Returns a MsnObject's type.
- *
- * @param obj The object.
- *
- * @return The object type.
- */
-MsnObjectType msn_object_get_type(const MsnObject *obj);
-
-/**
- * Returns a MsnObject's location value.
- *
- * @param obj The object.
- *
- * @return The location value.
- */
-const char *msn_object_get_location(const MsnObject *obj);
-
-/**
- * Returns a MsnObject's friendly name value.
- *
- * @param obj The object.
- *
- * @return The friendly name value.
- */
-const char *msn_object_get_friendly(const MsnObject *obj);
-
-/**
- * Returns a MsnObject's SHA1D value.
- *
- * @param obj The object.
- *
- * @return The SHA1D value.
- */
-const char *msn_object_get_sha1d(const MsnObject *obj);
-
-/**
- * Returns a MsnObject's SHA1C value.
- *
- * @param obj The object.
- *
- * @return The SHA1C value.
- */
-const char *msn_object_get_sha1c(const MsnObject *obj);
-
-#endif /* _MSN_OBJECT_H_ */
--- a/src/protocols/msn/msnslp.c	Sun Jun 06 03:42:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,564 +0,0 @@
-/**
- * @file msnslp.c MSNSLP support
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#include "msn.h"
-#include "msnslp.h"
-
-MsnSlpSession *
-msn_slp_session_new(MsnSwitchBoard *swboard, gboolean local_initiated)
-{
-	MsnSlpSession *slpsession;
-
-	g_return_val_if_fail(swboard != NULL, NULL);
-
-	slpsession = g_new0(MsnSlpSession, 1);
-
-	slpsession->swboard = swboard;
-	slpsession->local_initiated = local_initiated;
-
-	return slpsession;
-}
-
-void
-msn_slp_session_destroy(MsnSlpSession *session)
-{
-	g_return_if_fail(session != NULL);
-
-	if (session->orig_body != NULL)
-		g_free(session->orig_body);
-
-	if (session->outgoing_msg != NULL)
-		msn_message_unref(session->outgoing_msg);
-
-	if (session->call_id != NULL)
-		g_free(session->call_id);
-
-	if (session->branch != NULL)
-		g_free(session->branch);
-
-	g_free(session);
-}
-
-static void
-msn_slp_session_send_message(MsnSlpSession *slpsession,
-							 const char *local_user, const char *remote_user,
-							 const char *header, const char *branch,
-							 int cseq, const char *call_id,
-							 const char *content)
-{
-	MsnMessage *invite_msg;
-	char *body;
-
-	g_return_if_fail(slpsession != NULL);
-	g_return_if_fail(header     != NULL);
-	g_return_if_fail(branch     != NULL);
-	g_return_if_fail(call_id    != NULL);
-
-	if (branch == NULL)
-		branch = "null";
-
-	body = g_strdup_printf(
-		"%s\r\n"
-		"To: <msnmsgr:%s>\r\n"
-		"From: <msnmsgr:%s>\r\n"
-		"Via: MSNSLP/1.0/TLP ;branch={%s}\r\n"
-		"CSeq: %d\r\n"
-		"Call-ID: {%s}\r\n"
-		"Max-Forwards: 0\r\n"
-		"Content-Type: application/x-msnmsgr-sessionreqbody\r\n"
-		"Content-Length: %d\r\n"
-		"\r\n"
-		"%s"
-		"\r\n\r\n",
-		header,
-		remote_user,
-		local_user,
-		branch, cseq, call_id,
-		(content == NULL ? 0  : (int)strlen(content) + 5),
-		(content == NULL ? "" : content));
-
-	gaim_debug_misc("msn", "Message = {%s}\n", body);
-
-	invite_msg = msn_message_new_msnslp();
-
-	msn_message_set_bin_data(invite_msg, body, strlen(body));
-
-	g_free(body);
-
-	msn_slp_session_send_msg(slpsession, invite_msg);
-}
-
-static gboolean
-send_error_500(MsnSlpSession *slpsession, const char *call_id, MsnMessage *msg)
-{
-	MsnUser *local_user;
-
-	g_return_val_if_fail(slpsession != NULL, TRUE);
-	g_return_val_if_fail(msg        != NULL, TRUE);
-
-	local_user = slpsession->swboard->servconn->session->user;
-
-	msn_slp_session_send_message(slpsession, msg->passport,
-								 msn_user_get_passport(local_user),
-								 "MSNSLP/1.0 500 Internal Error",
-								 slpsession->branch, 1, call_id, NULL);
-
-	return TRUE;
-}
-
-static gboolean
-send_cb(gpointer user_data)
-{
-	MsnSlpSession *slpsession = (MsnSlpSession *)user_data;
-	MsnMessage *msg;
-	char data[1200];
-	size_t len;
-
-	len = fread(data, 1, 1200, slpsession->send_fp);
-
-	slpsession->remaining_size -= len;
-
-	msg = msn_message_new_msnslp();
-	msn_message_set_bin_data(msg, data, len);
-
-	msn_slp_session_send_msg(slpsession, msg);
-
-	if (slpsession->remaining_size <= 0)
-	{
-		slpsession->send_timer = 0;
-
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-gboolean
-msn_slp_session_msg_received(MsnSlpSession *slpsession, MsnMessage *msg)
-{
-	const char *body;
-	const char *c, *c2;
-	GaimAccount *account;
-
-	g_return_val_if_fail(slpsession != NULL,  TRUE);
-	g_return_val_if_fail(msg != NULL,         TRUE);
-	g_return_val_if_fail(msg->msnslp_message, TRUE);
-	g_return_val_if_fail(!strcmp(msn_message_get_content_type(msg),
-								 "application/x-msnmsgrp2p"), TRUE);
-
-	account = slpsession->swboard->servconn->session->account;
-
-	body = msn_message_get_bin_data(msg, NULL);
-
-	gaim_debug_misc("msn", "MSNSLP Message: {%s}\n", body);
-
-	if (*body == '\0')
-	{
-		/* ACK. Ignore it. */
-		gaim_debug_info("msn", "Received MSNSLP ACK\n");
-
-		return FALSE;
-	}
-
-	if (slpsession->send_fp != NULL && slpsession->remaining_size == 0)
-	{
-		/*
-		 * In theory, if we received something while send_fp is non-NULL,
-		 * but remaining_size is 0, then this is a data ack message.
-		 *
-		 * Say BYE-BYE.
-		 */
-		MsnUser *local_user;
-		char *header;
-
-		fclose(slpsession->send_fp);
-		slpsession->send_fp = NULL;
-
-		header = g_strdup_printf("BYE MSNMSGR:%s MSNSLP/1.0",
-			msg->passport);
-
-		local_user = slpsession->swboard->servconn->session->user;
-
-		msn_slp_session_send_message(slpsession, msg->passport,
-									 msn_user_get_passport(local_user),
-									 header,
-									 "A0D624A6-6C0C-4283-A9E0-BC97B4B46D32",
-									 0, slpsession->call_id, "");
-
-		g_free(header);
-
-		return TRUE;
-	}
-
-	if (!strncmp(body, "MSNSLP/1.0 ", strlen("MSNSLP/1.0 ")))
-	{
-		/* Make sure this is "OK" */
-		const char *status = body + strlen("MSNSLP/1.0 ");
-
-		if (strncmp(status, "200 OK", 6))
-		{
-			/* It's not valid. Kill this off. */
-			char temp[32];
-			const char *c;
-
-			/* Eww */
-			if ((c = strchr(status, '\r')) || (c = strchr(status, '\n')) ||
-				(c = strchr(status, '\0')))
-			{
-				strncpy(temp, status, c - status);
-				temp[c - status] = '\0';
-			}
-
-			gaim_debug_error("msn", "Received non-OK result: %s\n", temp);
-
-			return TRUE;
-		}
-	}
-	else if (!strncmp(body, "INVITE", strlen("INVITE")))
-	{
-		/* Parse it. Oh this is fun. */
-		char *branch, *call_id, *temp;
-		unsigned int session_id, app_id;
-
-		/* First, branch. */
-		if ((c = strstr(body, ";branch={")) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		c += strlen(";branch={");
-
-		if ((c2 = strchr(c, '}')) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		branch = g_strndup(c, c2 - c);
-
-		if (slpsession->branch != NULL)
-			slpsession->branch = branch;
-
-		/* Second, Call-ID */
-		if ((c = strstr(body, "Call-ID: {")) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		c += strlen("Call-ID: {");
-
-		if ((c2 = strchr(c, '}')) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		call_id = g_strndup(c, c2 - c);
-
-		if (slpsession->call_id != NULL)
-			slpsession->call_id = call_id;
-
-		/* Third, SessionID */
-		if ((c = strstr(body, "SessionID: ")) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		c += strlen("SessionID: ");
-
-		if ((c2 = strchr(c, '\r')) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		temp = g_strndup(c, c2 - c);
-		session_id = atoi(temp);
-		g_free(temp);
-
-		/* Fourth, AppID */
-		if ((c = strstr(body, "AppID: ")) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		c += strlen("AppID: ");
-
-		if ((c2 = strchr(c, '\r')) == NULL)
-			return send_error_500(slpsession, NULL, msg);
-
-		temp = g_strndup(c, c2 - c);
-		app_id = atoi(temp);
-		g_free(temp);
-
-		if (app_id == 1)
-		{
-			MsnSession *session;
-			MsnMessage *new_msg;
-			MsnUser *local_user;
-			MsnUser *remote_user;
-			char *content;
-			char nil_body[4];
-			struct stat st;
-
-			/* Send the 200 OK message. */
-			content = g_strdup_printf("SessionID: %d", session_id);
-			msn_slp_session_send_ack(slpsession, msg);
-
-			session = slpsession->swboard->servconn->session;
-
-			local_user = session->user;
-
-			msn_slp_session_send_message(slpsession, msg->passport,
-										 msn_user_get_passport(local_user),
-										 "MSNSLP/1.0 200 OK",
-										 branch, 1, call_id, content);
-
-			g_free(content);
-
-			/* Send the Data Preparation message. */
-			memset(nil_body, 0, sizeof(nil_body));
-
-			slpsession->session_id = session_id;
-
-			remote_user = msn_user_new(session, msg->passport, NULL);
-
-			slpsession->receiver = remote_user;
-			slpsession->sender = session->user;
-
-			new_msg = msn_message_new_msnslp();
-			msn_message_set_bin_data(new_msg, nil_body, 4);
-			new_msg->msnslp_footer.value = 1;
-
-			msn_slp_session_send_msg(slpsession, new_msg);
-
-			slpsession->send_fp =
-				fopen(gaim_account_get_buddy_icon(account), "rb");
-
-			if (stat(gaim_account_get_buddy_icon(account), &st) == 0)
-				slpsession->remaining_size = st.st_size;
-
-			slpsession->send_timer = gaim_timeout_add(10, send_cb, slpsession);
-		}
-		else
-			return send_error_500(slpsession, call_id, msg);
-
-		return FALSE;
-	}
-
-	/* Now send an ack, since we got this. */
-	msn_slp_session_send_ack(slpsession, msg);
-
-	return FALSE;
-}
-
-static void
-send_msg_part(MsnSlpSession *slpsession, MsnMessage *msg)
-{
-	msg->msnslp_header.length =
-		(slpsession->orig_len - slpsession->offset > 1202
-		 ? 1202 : slpsession->orig_len - slpsession->offset);
-
-	if (slpsession->offset > 0)
-	{
-		msn_message_set_bin_data(msg,
-			slpsession->orig_body + slpsession->offset,
-			msg->msnslp_header.length);
-	}
-
-	msg->msnslp_header.offset = slpsession->offset;
-
-	msn_switchboard_send_msg(slpsession->swboard, msg);
-
-	if (slpsession->offset + msg->msnslp_header.length == slpsession->orig_len)
-	{
-		msn_message_destroy(msg);
-
-		g_free(slpsession->orig_body);
-
-		slpsession->offset       = 0;
-		slpsession->orig_len     = 0;
-		slpsession->orig_body    = NULL;
-		slpsession->outgoing_msg = NULL;
-	}
-	else
-		slpsession->offset += msg->msnslp_header.length;
-}
-
-void
-msn_slp_session_send_msg(MsnSlpSession *slpsession, MsnMessage *msg)
-{
-	const void *temp;
-
-	g_return_if_fail(slpsession != NULL);
-	g_return_if_fail(msg != NULL);
-	g_return_if_fail(msg->msnslp_message);
-	g_return_if_fail(slpsession->outgoing_msg == NULL);
-
-	msg->msnslp_header.session_id = slpsession->session_id;
-
-	slpsession->outgoing_msg = msn_message_ref(msg);
-
-	if (slpsession->base_id == 0)
-	{
-		slpsession->base_id = rand() % 0x0FFFFFF0 + 4;
-		slpsession->prev_msg_id = slpsession->base_id;
-	}
-	else if (slpsession->offset == 0)
-		slpsession->prev_msg_id = ++slpsession->base_id;
-
-	msg->msnslp_header.id = slpsession->prev_msg_id;
-	/*msg->msnslp_header.ack_id = rand() % 0xFFFFFF00;*/
-	msg->msnslp_header.ack_id = 0x1407C7DE;
-
-	msn_message_set_charset(msg, NULL);
-
-	if (msg->msnslp_header.session_id != 0)
-		msg->msnslp_footer.value = 1;
-
-	temp = msn_message_get_bin_data(msg, &slpsession->orig_len);
-
-	slpsession->orig_body = g_memdup(temp, slpsession->orig_len);
-
-	msg->msnslp_header.total_size = slpsession->orig_len;
-	msg->msnslp_header.length = slpsession->orig_len;
-
-	send_msg_part(slpsession, msg);
-}
-
-void
-msn_slp_session_send_ack(MsnSlpSession *slpsession, MsnMessage *acked_msg)
-{
-	MsnMessage *msg;
-	gboolean new_base_id = FALSE;
-
-	g_return_if_fail(slpsession != NULL);
-	g_return_if_fail(acked_msg != NULL);
-	g_return_if_fail(acked_msg->msnslp_message);
-	g_return_if_fail(slpsession->outgoing_msg == NULL);
-
-	msg = msn_message_new_msnslp_ack(acked_msg);
-
-	if (slpsession->base_id == 0)
-	{
-		slpsession->base_id = rand() % 0x0FFFFE00 + 10;
-		slpsession->prev_msg_id = slpsession->base_id;
-
-		new_base_id = TRUE;
-	}
-	else
-		slpsession->prev_msg_id = ++slpsession->base_id;
-
-	msg->msnslp_header.id = slpsession->prev_msg_id;
-
-	if (new_base_id)
-		slpsession->prev_msg_id -= 4;
-
-	msn_switchboard_send_msg(slpsession->swboard, msg);
-}
-
-void
-msn_slp_session_request_user_display(MsnSlpSession *slpsession,
-									 MsnUser *local_user,
-									 MsnUser *remote_user,
-									 const MsnObject *obj)
-{
-	long session_id;
-	char *msnobj_data;
-	char *msnobj_base64;
-	char *header;
-	char *content;
-
-	g_return_if_fail(slpsession  != NULL);
-	g_return_if_fail(local_user  != NULL);
-	g_return_if_fail(remote_user != NULL);
-	g_return_if_fail(obj         != NULL);
-
-	msnobj_data = msn_object_to_string(obj);
-	msnobj_base64 = gaim_base64_encode(msnobj_data, strlen(msnobj_data));
-	g_free(msnobj_data);
-
-	session_id = rand() % 0xFFFFFF00 + 4;
-
-	if (slpsession->branch != NULL)
-		g_free(slpsession->branch);
-
-	slpsession->branch = g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X",
-										 rand() % 0xAAFF + 0x1111,
-										 rand() % 0xAAFF + 0x1111,
-										 rand() % 0xAAFF + 0x1111,
-										 rand() % 0xAAFF + 0x1111,
-										 rand() % 0xAAFF + 0x1111,
-										 rand() % 0xAAFF + 0x1111,
-										 rand() % 0xAAFF + 0x1111,
-										 rand() % 0xAAFF + 0x1111);
-
-	if (slpsession->call_id != NULL)
-		g_free(slpsession->call_id);
-
-	slpsession->call_id = g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X",
-										  rand() % 0xAAFF + 0x1111,
-										  rand() % 0xAAFF + 0x1111,
-										  rand() % 0xAAFF + 0x1111,
-										  rand() % 0xAAFF + 0x1111,
-										  rand() % 0xAAFF + 0x1111,
-										  rand() % 0xAAFF + 0x1111,
-										  rand() % 0xAAFF + 0x1111,
-										  rand() % 0xAAFF + 0x1111);
-
-	content = g_strdup_printf(
-		"EUF-GUID: {A4268EEC-FEC5-49E5-95C3-F126696BDBF6}\r\n"
-		"SessionID: %lu\r\n"
-		"AppID: 1\r\n"
-		"Context: %s",
-		session_id,
-		msnobj_base64);
-
-	g_free(msnobj_base64);
-
-	header = g_strdup_printf("INVITE MSNMSGR:%s MSNSLP/1.0",
-							 msn_user_get_passport(remote_user));
-
-	msn_slp_session_send_message(slpsession,
-								 msn_user_get_passport(local_user),
-								 msn_user_get_passport(remote_user),
-								 header, slpsession->branch, 0,
-								 slpsession->call_id, content);
-
-	g_free(header);
-	g_free(content);
-}
-
-gboolean
-msn_p2p_msg(MsnServConn *servconn, MsnMessage *msg)
-{
-	MsnSwitchBoard *swboard = servconn->data;
-	gboolean session_ended = FALSE;
-
-#if 0
-	FILE *fp;
-	size_t len;
-	char *buf;
-
-	buf = msn_message_to_string(msg, &len);
-	/* Windows doesn't like Unix paths */
-	fp = fopen("/tmp/msn-msg", "ab");
-	fwrite(buf, 1, len, fp);
-	fclose(fp);
-
-	g_free(buf);
-#endif
-
-	if (swboard->slp_session == NULL)
-		swboard->slp_session = msn_slp_session_new(swboard, FALSE);
-
-	session_ended = msn_slp_session_msg_received(swboard->slp_session, msg);
-
-	if (session_ended)
-		msn_slp_session_destroy(swboard->slp_session);
-
-	return FALSE;
-}
--- a/src/protocols/msn/msnslp.h	Sun Jun 06 03:42:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/**
- * @file msnslp.h MSNSLP support
- *
- * gaim
- *
- * Gaim is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#ifndef _MSN_SLP_H_
-#define _MSN_SLP_H_
-
-typedef struct _MsnSlpSession MsnSlpSession;
-
-#include "msnobject.h"
-#include "user.h"
-
-#include "switchboard.h"
-
-struct _MsnSlpSession
-{
-	gboolean local_initiated;
-
-	MsnSwitchBoard *swboard;
-
-	char *branch;
-	char *call_id;
-
-	long session_id;
-	long base_id;
-	long prev_msg_id;
-
-	size_t offset;
-
-	void *orig_body;
-	size_t orig_len;
-
-	guint send_timer;
-	FILE *send_fp;
-
-	size_t remaining_size;
-
-	MsnUser *receiver;
-	MsnUser *sender;
-
-	MsnMessage *outgoing_msg;
-};
-
-/**
- * Creates a MSNSLP session.
- *
- * @param swboard         The switchboard.
- * @param local_initiated TRUE if the session was initiated locally.
- *
- * @return The new MSNSLP session handle.
- */
-MsnSlpSession *msn_slp_session_new(MsnSwitchBoard *swboard,
-								   gboolean local_initiated);
-
-/**
- * Destroys a MSNSLP session handle.
- *
- * This does not close the connection.
- *
- * @param slpsession The MSNSLP session to destroy.
- */
-void msn_slp_session_destroy(MsnSlpSession *slpsession);
-
-/**
- * Notifies the MSNSLP session handle that a message was received.
- *
- * @param slpsession The MSNSLP session.
- * @param msg        The message.
- *
- * @return TRUE if the session was closed, or FALSE otherwise.
- */
-gboolean msn_slp_session_msg_received(MsnSlpSession *slpsession,
-									  MsnMessage *msg);
-
-/**
- * Sends a message over a MSNSLP session.
- *
- * @param slpsession The MSNSLP session to send the message over.
- * @param msg        The message to send.
- */
-void msn_slp_session_send_msg(MsnSlpSession *session, MsnMessage *msg);
-
-/**
- * Sends an acknowledgement message over a MSNSLP session for the
- * specified message.
- *
- * @param slpsession The MSNSLP session to send the acknowledgement over.
- * @param acked_msg  The message to acknowledge.
- */
-void msn_slp_session_send_ack(MsnSlpSession *session, MsnMessage *acked_msg);
-
-/**
- * Requests a User Display image over a MSNSLP session.
- *
- * @param slpsession The MSNSLP session to request the image over.
- * @param localUser  The local user initiating the invite.
- * @param remoteUser The remote user the invite is sent to.
- * @param obj        The MSNObject representing the user display info.
- */
-void msn_slp_session_request_user_display(MsnSlpSession *session,
-										  MsnUser *localUser,
-										  MsnUser *remoteUser,
-										  const MsnObject *obj);
-
-/**
- * Processes application/x-msnmsgrp2p messages.
- *
- * @param servconn The server connection.
- * @param msg      The message.
- *
- * @return TRUE
- */
-gboolean msn_p2p_msg(MsnServConn *servconn, MsnMessage *msg);
-
-#endif /* _MSN_SLP_H_ */