tags 680455 + patch thanks Hi Michael
Thanks a lot for this report. I'll look into this one. Best regards, // Ola On Fri, Jul 06, 2012 at 10:44:56AM +1200, Michael Hudson-Doyle wrote: > Package: pptp-linux > Version: 1.7.2-6 > Severity: normal > > Dear Maintainer, > > Hi. I am reporting this bug in Debian as a favour to some Ubuntu-using > friends. While I work for Canonical I do not work on Ubuntu directly and > so apologies if I'm doing this wrong :-) > > The bug is https://bugs.launchpad.net/ubuntu/+source/pptp-linux/+bug/681617 > and the links therein indicate that upstream does not care any more. My > friend indicated that the patch helped their problem, so it seems reasonable > to ask for the patch to be included in Debian. I'll attach the debdiff > I used. > > Cheers, > mwh > > -- System Information: > Debian Release: wheezy/sid > APT prefers precise-updates > APT policy: (500, 'precise-updates'), (500, 'precise-security'), (500, > 'precise'), (100, 'precise-backports') > Architecture: amd64 (x86_64) > > Kernel: Linux 3.2.0-26-generic (SMP w/4 CPU cores) > Locale: LANG=en_NZ.UTF-8, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8) > Shell: /bin/sh linked to /bin/dash > > Versions of packages pptp-linux depends on: > ii binutils 2.22-6ubuntu1 > ii libc6 2.15-0ubuntu10 > ii ppp 2.4.5-5ubuntu1 > > pptp-linux recommends no packages. > > pptp-linux suggests no packages. > > -- no debconf information > diff -u pptp-linux-1.7.2/pptp.c pptp-linux-1.7.2/pptp.c > --- pptp-linux-1.7.2/pptp.c > +++ pptp-linux-1.7.2/pptp.c > @@ -79,6 +79,7 @@ > int disable_buffer = 0; > int test_type = 0; > int test_rate = 100; > +int missing_window = MISSING_WINDOW; > > struct in_addr get_ip_address(char *name); > int open_callmgr(struct in_addr inetaddr, char *phonenr, int argc,char > **argv,char **envp, int pty_fd, int gre_fd); > @@ -116,13 +117,14 @@ > " --timeout <secs> Time to wait for reordered packets > (0.01 to 10 secs)\n" > " --nobuffer Disable packet buffering and reordering > completely\n" > " --idle-wait Time to wait before sending echo > request\n" > - " --max-echo-wait Time to wait before giving up > on lack of reply\n" > + " --max-echo-wait Time to wait before giving up on lack > of reply\n" > " --logstring <name> Use <name> instead of 'anon' in syslog > messages\n" > " --localbind <addr> Bind to specified IP address instead of > wildcard\n" > " --loglevel <level> Sets the debugging level (0=low, > 1=default, 2=high)\n" > " --test-type <type> Damage the packet stream by > reordering\n" > - " --test-rate <n> Do the test every n packets\n", > - > + " --test-rate <n> yDo the test every n packets\n" > + " --missing-window <n> Activate 'missing window' validation > and set tolerance to <n> packages (300=default, 6000=recommended)\n", > + > version, progname, progname); > log("%s called with wrong arguments, program not started.", progname); > exit(1); > @@ -212,6 +214,7 @@ > {"version", 0, 0, 0}, > {"test-type", 1, 0, 0}, > {"test-rate", 1, 0, 0}, > + {"missing-window", 1, 0, 0}, > {0, 0, 0, 0} > }; > int option_index = 0; > @@ -290,7 +293,21 @@ > test_type = atoi(optarg); > } else if (option_index == 14) { /* --test-rate */ > test_rate = atoi(optarg); > - } > + } else if (option_index == 15) { /* --missing window */ > + int x = atoi(optarg); > + if (x <= 0) { > + fprintf(stderr, "--missing-window must be > integer greater than zero\n"); > + log("--missing-window must be integer greater > than zero\n"); > + exit(2); > + } else if (x < 300) { > + fprintf(stderr, "--missing-window is set very > low: default=300, recommended=6000 - proceeding anyway\n"); > + log("--missing-window is set very low: > default=300, recommended=6000 - proceeding anyway\n"); > + } else { > + fprintf(stderr, "--missing-window validation is > active and set to: %d\n", x); > + log("--missing-window validation is active and > set to: %d\n", x); > + missing_window = x; > + } > + } > break; > case '?': /* unrecognised option */ > /* fall through */ > diff -u pptp-linux-1.7.2/debian/changelog pptp-linux-1.7.2/debian/changelog > --- pptp-linux-1.7.2/debian/changelog > +++ pptp-linux-1.7.2/debian/changelog > @@ -1,3 +1,9 @@ > +pptp-linux (1.7.2-6ubuntu1) precise; urgency=low > + > + * Include adj_missing_window.patch from bug #681617 > + > + -- Michael Hudson-Doyle <michael.hud...@linaro.org> Wed, 04 Jul 2012 > 10:29:36 +1200 > + > pptp-linux (1.7.2-6) unstable; urgency=low > > * Now depends on binutils. Closes: #587506. > only in patch2: > unchanged: > --- pptp-linux-1.7.2.orig/pqueue.h > +++ pptp-linux-1.7.2/pqueue.h > @@ -9,7 +9,10 @@ > extern int packet_timeout_usecs; > > /* assume packet is bad/spoofed if it's more than this many seqs ahead */ > -#define MISSING_WINDOW 300 > +/* default is NOT to check - command line override via '--missing-window > <n>'*/ > +/* default value is 300 - recommended is 6000 for high speed data rates*/ > +#define MISSING_WINDOW -1 > +extern int missing_window; > > /* Packet queue structure: linked list of packets received out-of-order */ > typedef struct pqueue { > only in patch2: > unchanged: > --- pptp-linux-1.7.2.orig/pptp_gre.c > +++ pptp-linux-1.7.2/pptp_gre.c > @@ -405,9 +405,9 @@ > seq, seq_recv + 1); > stats.rx_underwin++; > /* sequence number too high, is it reasonably close? */ > - } else if ( seq < seq_recv + MISSING_WINDOW || > - WRAPPED(seq, seq_recv + MISSING_WINDOW) ) { > - stats.rx_buffered++; > + } else if ( (missing_window == -1) || > + (seq < seq_recv + missing_window || > WRAPPED(seq, seq_recv + missing_window)) ) { > + stats.rx_buffered++; > if ( log_level >= 1 ) > log("%s packet %d (expecting %d, lost or reordered)", > disable_buffer ? "accepting" : "buffering", > only in patch2: > unchanged: > --- pptp-linux-1.7.2.orig/debian/patches/adj_missing_window.diff > +++ pptp-linux-1.7.2/debian/patches/adj_missing_window.diff > @@ -0,0 +1,91 @@ > +diff -aur pptp-1.7.2/pptp.c copy/pptp.c > +--- pptp-1.7.2/pptp.c 2008-05-14 08:33:55.000000000 +0200 > ++++ copy/pptp.c 2012-05-10 13:37:14.000000000 +0200 > +@@ -79,6 +79,7 @@ > + int disable_buffer = 0; > + int test_type = 0; > + int test_rate = 100; > ++int missing_window = MISSING_WINDOW; > + > + struct in_addr get_ip_address(char *name); > + int open_callmgr(struct in_addr inetaddr, char *phonenr, int argc,char > **argv,char **envp, int pty_fd, int gre_fd); > +@@ -116,13 +117,14 @@ > + " --timeout <secs> Time to wait for reordered packets > (0.01 to 10 secs)\n" > + " --nobuffer Disable packet buffering and reordering > completely\n" > + " --idle-wait Time to wait before sending echo > request\n" > +- " --max-echo-wait Time to wait before giving up > on lack of reply\n" > ++ " --max-echo-wait Time to wait before giving up on lack > of reply\n" > + " --logstring <name> Use <name> instead of 'anon' in syslog > messages\n" > + " --localbind <addr> Bind to specified IP address instead of > wildcard\n" > + " --loglevel <level> Sets the debugging level (0=low, > 1=default, 2=high)\n" > + " --test-type <type> Damage the packet stream by > reordering\n" > +- " --test-rate <n> Do the test every n packets\n", > +- > ++ " --test-rate <n> yDo the test every n packets\n" > ++ " --missing-window <n> Activate 'missing window' validation > and set tolerance to <n> packages (300=default, 6000=recommended)\n", > ++ > + version, progname, progname); > + log("%s called with wrong arguments, program not started.", progname); > + exit(1); > +@@ -212,6 +214,7 @@ > + {"version", 0, 0, 0}, > + {"test-type", 1, 0, 0}, > + {"test-rate", 1, 0, 0}, > ++ {"missing-window", 1, 0, 0}, > + {0, 0, 0, 0} > + }; > + int option_index = 0; > +@@ -290,7 +293,21 @@ > + test_type = atoi(optarg); > + } else if (option_index == 14) { /* --test-rate */ > + test_rate = atoi(optarg); > +- } > ++ } else if (option_index == 15) { /* --missing window */ > ++ int x = atoi(optarg); > ++ if (x <= 0) { > ++ fprintf(stderr, "--missing-window must be > integer greater than zero\n"); > ++ log("--missing-window must be integer greater > than zero\n"); > ++ exit(2); > ++ } else if (x < 300) { > ++ fprintf(stderr, "--missing-window is set very > low: default=300, recommended=6000 - proceeding anyway\n"); > ++ log("--missing-window is set very low: > default=300, recommended=6000 - proceeding anyway\n"); > ++ } else { > ++ fprintf(stderr, "--missing-window validation is > active and set to: %d\n", x); > ++ log("--missing-window validation is active and > set to: %d\n", x); > ++ missing_window = x; > ++ } > ++ } > + break; > + case '?': /* unrecognised option */ > + /* fall through */ > +diff -aur pptp-1.7.2/pptp_gre.c copy/pptp_gre.c > +--- pptp-1.7.2/pptp_gre.c 2008-05-14 08:33:55.000000000 +0200 > ++++ copy/pptp_gre.c 2012-05-10 14:00:20.554335736 +0200 > +@@ -405,9 +405,9 @@ > + seq, seq_recv + 1); > + stats.rx_underwin++; > + /* sequence number too high, is it reasonably close? */ > +- } else if ( seq < seq_recv + MISSING_WINDOW || > +- WRAPPED(seq, seq_recv + MISSING_WINDOW) ) { > +- stats.rx_buffered++; > ++ } else if ( (missing_window == -1) || > ++ (seq < seq_recv + missing_window || > WRAPPED(seq, seq_recv + missing_window)) ) { > ++ stats.rx_buffered++; > + if ( log_level >= 1 ) > + log("%s packet %d (expecting %d, lost or reordered)", > + disable_buffer ? "accepting" : "buffering", > +diff -aur pptp-1.7.2/pqueue.h copy/pqueue.h > +--- pptp-1.7.2/pqueue.h 2008-05-14 08:33:55.000000000 +0200 > ++++ copy/pqueue.h 2012-05-10 13:37:22.000000000 +0200 > +@@ -9,7 +9,10 @@ > + extern int packet_timeout_usecs; > + > + /* assume packet is bad/spoofed if it's more than this many seqs ahead */ > +-#define MISSING_WINDOW 300 > ++/* default is NOT to check - command line override via '--missing-window > <n>'*/ > ++/* default value is 300 - recommended is 6000 for high speed data rates*/ > ++#define MISSING_WINDOW -1 > ++extern int missing_window; > + > + /* Packet queue structure: linked list of packets received out-of-order */ > + typedef struct pqueue { -- --------------------- Ola Lundqvist --------------------------- / o...@debian.org Annebergsslingan 37 \ | o...@inguza.com 654 65 KARLSTAD | | http://inguza.com/ +46 (0)70-332 1551 | \ gpg/f.p.: 7090 A92B 18FE 7994 0C36 4FE4 18A1 B1CF 0FE5 3DD9 / --------------------------------------------------------------- -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org