tags 692129 + help patch upstream thanks Hi,
The bug seems to be recognized by upstream but there seems to be no work going on towards a fix. I've prepared a preliminar patch, but I can't test it right now, if you can reproduce it, please test the patch and let me now of the results. I'll try to contact upstream and ask for their input. If you want to test this packages you can use the packages published in: http://maxy.com.ar/debian Or you can use the attached patch and apply it to the pptpd package. Thanks, -- "If a pickpocket meets a saint, he sees only his pockets." -- Kegley's Law Saludos /\/\ /\ >< `/
diff -ru pptpd-1.3.4/pptpgre.c pptpd-1.3.4.changed/pptpgre.c --- pptpd-1.3.4/pptpgre.c 2012-11-24 18:07:08.000000000 +0100 +++ pptpd-1.3.4.changed/pptpgre.c 2012-11-24 18:02:34.498283284 +0100 @@ -443,6 +443,7 @@ unsigned char buffer[PACKET_MAX + sizeof(struct pptp_gre_header)]; } u; unsigned header_len; + ssize_t status; #ifdef HAVE_WRITEV struct iovec iovec[2]; #endif @@ -493,12 +494,18 @@ iovec[0].iov_len = header_len; iovec[1].iov_base = pack; iovec[1].iov_len = len; - return writev(fd, iovec, 2); + status = writev(fd, iovec, 2); #else /* copy payload into buffer */ memcpy(u.buffer + header_len, pack, len); /* record and increment sequence numbers */ /* write this baby out to the net */ - return write(fd, u.buffer, header_len + len); + status = write(fd, u.buffer, header_len + len); #endif + if ((status >= 0) || (errno != ENOBUFS)) { + return status; + } + // if ENOBUFS, do not close the connection + gre.seq_sent--; + return 0; }
signature.asc
Description: Digital signature