libgaim/protocols/irc/dcc_send.c

changeset 15345
797936e968ff
parent 14329
05c3cc0c1f79
child 20470
77693555855f
child 20472
6a6d2ef151e6
--- a/libgaim/protocols/irc/dcc_send.c	Thu Jan 04 19:21:10 2007 +0000
+++ b/libgaim/protocols/irc/dcc_send.c	Thu Jan 04 23:20:12 2007 +0000
@@ -108,31 +108,34 @@
 	i++;
 
 	xfer = gaim_xfer_new(irc->account, GAIM_XFER_RECEIVE, from);
-	xd = g_new0(struct irc_xfer_rx_data, 1);
-	xfer->data = xd;
+	if (xfer)
+	{
+		xd = g_new0(struct irc_xfer_rx_data, 1);
+		xfer->data = xd;
 
-	gaim_xfer_set_filename(xfer, filename->str);
-	xfer->remote_port = atoi(token[i+1]);
+		gaim_xfer_set_filename(xfer, filename->str);
+		xfer->remote_port = atoi(token[i+1]);
 
-	nip = strtoul(token[i], NULL, 10);
-	if (nip) {
-		addr.s_addr = htonl(nip);
-		xd->ip = g_strdup(inet_ntoa(addr));
-	} else {
-		xd->ip = g_strdup(token[i]);
+		nip = strtoul(token[i], NULL, 10);
+		if (nip) {
+			addr.s_addr = htonl(nip);
+			xd->ip = g_strdup(inet_ntoa(addr));
+		} else {
+			xd->ip = g_strdup(token[i]);
+		}
+		gaim_debug(GAIM_DEBUG_INFO, "irc", "Receiving file from %s\n",
+				   xd->ip);
+		gaim_xfer_set_size(xfer, token[i+2] ? atoi(token[i+2]) : 0);
+		
+		gaim_xfer_set_init_fnc(xfer, irc_dccsend_recv_init);
+		gaim_xfer_set_ack_fnc(xfer, irc_dccsend_recv_ack);
+		
+		gaim_xfer_set_end_fnc(xfer, irc_dccsend_recv_destroy);
+		gaim_xfer_set_request_denied_fnc(xfer, irc_dccsend_recv_destroy);
+		gaim_xfer_set_cancel_send_fnc(xfer, irc_dccsend_recv_destroy);
+		
+		gaim_xfer_request(xfer);
 	}
-	gaim_debug(GAIM_DEBUG_INFO, "irc", "Receiving file from %s\n",
-		xd->ip);
-	gaim_xfer_set_size(xfer, token[i+2] ? atoi(token[i+2]) : 0);
-
-	gaim_xfer_set_init_fnc(xfer, irc_dccsend_recv_init);
-	gaim_xfer_set_ack_fnc(xfer, irc_dccsend_recv_ack);
-
-	gaim_xfer_set_end_fnc(xfer, irc_dccsend_recv_destroy);
-	gaim_xfer_set_request_denied_fnc(xfer, irc_dccsend_recv_destroy);
-	gaim_xfer_set_cancel_send_fnc(xfer, irc_dccsend_recv_destroy);
-
-	gaim_xfer_request(xfer);
 	g_strfreev(token);
 	g_string_free(filename, TRUE);
 }
@@ -344,17 +347,19 @@
 
 	/* Build the file transfer handle */
 	xfer = gaim_xfer_new(gaim_connection_get_account(gc), GAIM_XFER_SEND, who);
-
-	xd = g_new0(struct irc_xfer_send_data, 1);
-	xd->fd = -1;
-	xfer->data = xd;
+	if (xfer)
+	{
+		xd = g_new0(struct irc_xfer_send_data, 1);
+		xd->fd = -1;
+		xfer->data = xd;
 
-	/* Setup our I/O op functions */
-	gaim_xfer_set_init_fnc(xfer, irc_dccsend_send_init);
-	gaim_xfer_set_write_fnc(xfer, irc_dccsend_send_write);
-	gaim_xfer_set_end_fnc(xfer, irc_dccsend_send_destroy);
-	gaim_xfer_set_request_denied_fnc(xfer, irc_dccsend_send_destroy);
-	gaim_xfer_set_cancel_send_fnc(xfer, irc_dccsend_send_destroy);
+		/* Setup our I/O op functions */
+		gaim_xfer_set_init_fnc(xfer, irc_dccsend_send_init);
+		gaim_xfer_set_write_fnc(xfer, irc_dccsend_send_write);
+		gaim_xfer_set_end_fnc(xfer, irc_dccsend_send_destroy);
+		gaim_xfer_set_request_denied_fnc(xfer, irc_dccsend_send_destroy);
+		gaim_xfer_set_cancel_send_fnc(xfer, irc_dccsend_send_destroy);
+	}
 
 	return xfer;
 }

mercurial