X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-servers.c;h=f9f5854f20f26d002658adeba1c513fc947f534d;hb=157f4732888e39853b3de6617eeeffd910a4a06d;hp=8da657014ab130e4c6ea6ec86bfe7c5a9fba4822;hpb=57085fa9a76d72b3af854133659ca3732bad3cc2;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index 8da65701..f9f5854f 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -308,7 +308,7 @@ char *silc_server_get_channels(SILC_SERVER_REC *server) /* SYNTAX: PING */ /* SYNTAX: SCONNECT [] */ /* SYNTAX: USERS */ -/* SYNTAX: FILE SEND */ +/* SYNTAX: FILE SEND [ []] */ /* SYNTAX: FILE RECEIVE [] */ /* SYNTAX: FILE CLOSE [] */ /* SYNTAX: FILE */ @@ -573,6 +573,8 @@ static void command_file(const char *data, SILC_SERVER_REC *server, uint32 *argv_lens, *argv_types; int type = 0; FtpSession ftp; + char *local_ip = NULL; + uint32 local_port = 0; if (!server || !IS_SILC_SERVER(server) || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED); @@ -581,7 +583,7 @@ static void command_file(const char *data, SILC_SERVER_REC *server, /* Now parse all arguments */ tmp = g_strconcat("FILE", " ", data, NULL); - silc_parse_command_line(tmp, &argv, &argv_lens, &argv_types, &argc, 4); + silc_parse_command_line(tmp, &argv, &argv_lens, &argv_types, &argc, 6); g_free(tmp); if (argc == 1) @@ -627,10 +629,16 @@ static void command_file(const char *data, SILC_SERVER_REC *server, client_entry = entrys[0]; silc_free(entrys); + if (argc >= 5) + local_ip = argv[4]; + if (argc >= 6) + local_port = atoi(argv[5]); + ftp = silc_calloc(1, sizeof(*ftp)); ftp->session_id = silc_client_file_send(silc_client, conn, silc_client_file_monitor, - server, client_entry, argv[2]); + server, local_ip, local_port, + client_entry, argv[2]); printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_SEND, client_entry->nickname,