diff -u pptpd-orig/pptpgre.c pptpd-1.3.3/pptpgre.c --- pptpd-orig/pptpgre.c 2006-03-27 16:39:05.000000000 -0500 +++ pptpd-1.3.3/pptpgre.c 2007-04-13 23:23:33.000000000 -0400 @@ -342,7 +342,7 @@ struct pptp_gre_header *header; int status, ip_len = 0; - dequeue_gre(cb, fd); + dequeue_gre(cb, cl); if ((status = read(fd, buffer, sizeof(buffer))) <= 0) { syslog(LOG_ERR, "GRE: read(fd=%d,buffer=%lx,len=%d) from network failed: status = %d error = %s", fd, (unsigned long) buffer, sizeof(buffer), status, status ? strerror(errno) : "No error"); @@ -404,7 +404,7 @@ return 0; } /* check for out-of-order sequence number */ - if (seq_greater(seq, gre.seq_recv)) { + if (seq == gre.seq_recv + 1) { if (pptpctrl_debug) syslog(LOG_DEBUG, "GRE: accepting packet #%d", seq);