~ubuntu-branches/ubuntu/karmic/irssi/karmic-updates

« back to all changes in this revision

Viewing changes to debian/patches/13proxy-join-fix

  • Committer: Bazaar Package Importer
  • Author(s): Pedro Fragoso
  • Date: 2008-11-05 02:41:00 UTC
  • Revision ID: james.westby@ubuntu.com-20081105024100-6kvi52crw2x5xo57
Tags: 0.8.12-5ubuntu1
* Merge from Debian unstable (LP: #295270), Ubuntu remaining changes:
  - Added debian/patches/90irc-ubuntu-com.dpatch 
  - debian/patches/03firsttimer_text:
    + Adapt it so it tells you about connecting to irc.ubuntu.com and
      joining #ubuntu instead of irc.debian.org and #debian. 
      New with this merge: We now also apply this patch.
  - debian/irssi.perm: Don't remove alternative on upgrades.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Author: jilles  vim:ft=diff:
 
2
Description: Allow increasing the send buffer to 1MB/connection, and
 
3
  warn if that is exceeded, BTS #308673 (upstream svn r4840)
 
4
 
 
5
Index: irssi-0.8.12/src/core/net-sendbuffer.c
 
6
===================================================================
 
7
--- irssi-0.8.12.orig/src/core/net-sendbuffer.c
 
8
+++ irssi-0.8.12/src/core/net-sendbuffer.c
 
9
@@ -37,6 +37,7 @@ NET_SENDBUF_REC *net_sendbuffer_create(G
 
10
         rec->send_tag = -1;
 
11
        rec->handle = handle;
 
12
        rec->bufsize = bufsize > 0 ? bufsize : DEFAULT_BUFFER_SIZE;
 
13
+       rec->def_bufsize = rec->bufsize;
 
14
 
 
15
        buffers = g_slist_append(buffers, rec);
 
16
        return rec;
 
17
@@ -61,7 +62,9 @@ static int buffer_send(NET_SENDBUF_REC *
 
18
        ret = net_transmit(rec->handle, rec->buffer, rec->bufpos);
 
19
        if (ret < 0 || rec->bufpos == ret) {
 
20
                /* error/all sent - don't try to send it anymore */
 
21
-                g_free_and_null(rec->buffer);
 
22
+               rec->bufsize = rec->def_bufsize;
 
23
+               rec->buffer = g_realloc(rec->buffer, rec->bufsize);
 
24
+               rec->bufpos = 0;
 
25
                return TRUE;
 
26
        }
 
27
 
 
28
@@ -91,8 +94,16 @@ static int buffer_add(NET_SENDBUF_REC *r
 
29
                rec->bufpos = 0;
 
30
        }
 
31
 
 
32
-       if (rec->bufpos+size > rec->bufsize)
 
33
-               return FALSE;
 
34
+       while (rec->bufpos+size > rec->bufsize) {
 
35
+               if (rec->bufsize >= MAX_BUFFER_SIZE) {
 
36
+                       if (!rec->dead)
 
37
+                               g_warning("Dropping some data on an outgoing connection");
 
38
+                       rec->dead = 1;
 
39
+                       return FALSE;
 
40
+               }
 
41
+               rec->bufsize *= 2;
 
42
+               rec->buffer = g_realloc(rec->buffer, rec->bufsize);
 
43
+       }
 
44
 
 
45
        memcpy(rec->buffer+rec->bufpos, data, size);
 
46
        rec->bufpos += size;
 
47
@@ -110,7 +121,7 @@ int net_sendbuffer_send(NET_SENDBUF_REC 
 
48
        g_return_val_if_fail(data != NULL, -1);
 
49
        if (size <= 0) return 0;
 
50
 
 
51
-       if (rec->buffer == NULL) {
 
52
+       if (rec->buffer == NULL || rec->bufpos == 0) {
 
53
                 /* nothing in buffer - transmit immediately */
 
54
                ret = net_transmit(rec->handle, data, size);
 
55
                if (ret < 0) return -1;
 
56
Index: irssi-0.8.12/src/core/net-sendbuffer.h
 
57
===================================================================
 
58
--- irssi-0.8.12.orig/src/core/net-sendbuffer.h
 
59
+++ irssi-0.8.12/src/core/net-sendbuffer.h
 
60
@@ -2,6 +2,7 @@
 
61
 #define __NET_SENDBUFFER_H
 
62
 
 
63
 #define DEFAULT_BUFFER_SIZE 8192
 
64
+#define MAX_BUFFER_SIZE 1048576
 
65
 
 
66
 struct _NET_SENDBUF_REC {
 
67
         GIOChannel *handle;
 
68
@@ -10,6 +11,8 @@ struct _NET_SENDBUF_REC {
 
69
         int bufsize;
 
70
         int bufpos;
 
71
         char *buffer; /* Buffer is NULL until it's actually needed. */
 
72
+        int def_bufsize;
 
73
+        unsigned int dead:1;
 
74
 };
 
75
 
 
76
 /* Create new buffer - if `bufsize' is zero or less, DEFAULT_BUFFER_SIZE