-diff -ur irssi-0.7.98.4/src/irc/dcc/dcc-rec.h irssi-0.7.98.4.limited/src/irc/dcc/dcc-rec.h
---- irssi-0.7.98.4/src/irc/dcc/dcc-rec.h Mon Feb 19 04:40:06 2001
-+++ irssi-0.7.98.4.limited/src/irc/dcc/dcc-rec.h Sat Jan 19 19:40:16 2002
+diff -ur irssi-0.8.4.orig/src/irc/dcc/dcc-rec.h irssi-0.8.4/src/irc/dcc/dcc-rec.h
+--- irssi-0.8.4.orig/src/irc/dcc/dcc-rec.h Mon Feb 19 04:40:06 2001
++++ irssi-0.8.4/src/irc/dcc/dcc-rec.h Thu Mar 14 02:20:25 2002
@@ -20,6 +20,12 @@
time_t starttime; /* transfer start time */
- unsigned long transfd; /* bytes transferred */
+ uoff_t transfd; /* bytes transferred */
+int timeout_tag;
+
unsigned int destroyed:1; /* We're about to destroy this DCC recond */
GHashTable *module_data;
-diff -ur irssi-0.7.98.4/src/irc/dcc/dcc-send.c irssi-0.7.98.4.limited/src/irc/dcc/dcc-send.c
---- irssi-0.7.98.4/src/irc/dcc/dcc-send.c Wed Feb 28 20:26:21 2001
-+++ irssi-0.7.98.4.limited/src/irc/dcc/dcc-send.c Sat Jan 19 19:43:15 2002
-@@ -48,14 +48,83 @@
+diff -ur irssi-0.8.4.orig/src/irc/dcc/dcc-send.c irssi-0.8.4/src/irc/dcc/dcc-send.c
+--- irssi-0.8.4.orig/src/irc/dcc/dcc-send.c Sun Jan 20 04:10:27 2002
++++ irssi-0.8.4/src/irc/dcc/dcc-send.c Thu Mar 14 02:21:22 2002
+@@ -217,17 +217,87 @@
{
if (!IS_DCC_SEND(dcc)) return;
+ if (dcc->timeout_tag != -1)
+ g_source_remove(dcc->timeout_tag);
+
- if (dcc->fhandle != -1) close(dcc->fhandle);
+ if (dcc->fhandle != -1)
+ close(dcc->fhandle);
+
+ dcc_queue_send_next(dcc->queue);
}
+static int sent_too_much(SEND_DCC_REC *dcc)
+ return;
+ }
+
-+ g_source_remove(dcc->timeout_tag);
++ if (dcc->timeout_tag != -1)
++ g_source_remove(dcc->timeout_tag);
+ dcc->timeout_tag = -1;
+
+ dcc->tagwrite = g_input_add(dcc->handle, G_INPUT_WRITE,
ret = read(dcc->fhandle, buffer, sizeof(buffer));
if (ret <= 0) {
-@@ -116,6 +185,7 @@
+@@ -282,6 +352,7 @@
GIOChannel *handle;
IPADDR addr;
int port;
/* accept connection */
handle = net_accept(dcc->handle, &addr, &port);
-@@ -129,6 +199,14 @@
+@@ -296,6 +366,13 @@
g_source_remove(dcc->tagconn);
- net_disconnect(dcc->handle);
+ dcc->tagconn = -1;
-+ dcc->timeout_tag = -1;
+ dcc->skip_bytes = 0;
+ dcc->max_speed = settings_get_int("dcc_send_top_speed");
+
dcc->starttime = time(NULL);
dcc->handle = handle;
memcpy(&dcc->addr, &addr, sizeof(IPADDR));
-@@ -246,6 +324,7 @@
- {
+@@ -429,6 +429,7 @@
+ dcc->size = st.st_size;
+ dcc->fhandle = hfile;
+ dcc->queue = queue;
++ dcc->timeout_tag = -1;
+ dcc->file_quoted = strchr(fname, ' ') != NULL;
+ if (!passive) {
+ dcc->tagconn = g_input_add(handle, G_INPUT_READ,
+@@ -412,6 +490,7 @@
dcc_register_type("SEND");
settings_add_str("dcc", "dcc_upload_path", "~");
+ settings_add_bool("dcc", "dcc_send_replace_space_with_underscore", FALSE);
+ settings_add_int("dcc", "dcc_send_top_speed", 0);
-
signal_add("dcc destroyed", (SIGNAL_FUNC) sig_dcc_destroyed);
command_bind("dcc send", NULL, (SIGNAL_FUNC) cmd_dcc_send);
+ command_set_options("dcc send", "append flush prepend rmhead rmtail");