12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- Description: fix IDLE_WAIT implementation
- Author: Michael Douglass <mikedoug at mikedoug dot net>
- Origin: http://poptop.cvs.sourceforge.net/viewvc/poptop/poptop/pptpctrl.c?r1=1.21&r2=1.22
- Forwarded: not-needed
- Bug-Debian: http://bugs.debian.org/692654
- --- a/AUTHORS
- +++ b/AUTHORS
- @@ -28,6 +28,7 @@
- Chris Wilson
- Anton Gorlov
- Charlie Brady
- +Michael Douglass <mikedoug at mikedoug dot net>
-
- The Linux PPTP Server takes advantage of some Linux PPTP client code
- written by C. Scott Ananian <cananian at alumni.princeton.edu>
- --- a/pptpctrl.c
- +++ b/pptpctrl.c
- @@ -226,6 +226,7 @@
- int echo_wait = FALSE; /* Waiting for echo? */
- u_int32_t echo_count = 0; /* Sequence # of echo */
- time_t echo_time = 0; /* Time last echo req sent */
- + time_t last_time = time(NULL); /* Time last received data */
- struct timeval idleTime; /* How long to select() */
-
- /* General local variables */
- @@ -281,16 +282,6 @@
- } else if (encaps_gre(-1, NULL, 0))
- /* Pending ack and nothing else to do */
- encaps_gre(gre_fd, NULL, 0); /* send ack with no payload */
- - else if (echo_wait != TRUE) {
- - /* Timeout. Start idle link detection. */
- - echo_count++;
- - if (pptpctrl_debug)
- - syslog(LOG_DEBUG, "CTRL: Sending ECHO REQ id %d", echo_count);
- - time(&echo_time);
- - make_echo_req_packet(rply_packet, &rply_size, echo_count);
- - echo_wait = TRUE;
- - send_packet = TRUE;
- - }
- break;
-
- default:
- @@ -328,6 +319,7 @@
- /* handle control messages */
-
- if (FD_ISSET(clientSocket, &fds)) {
- + time(&last_time);
- send_packet = TRUE;
- switch (read_pptp_packet(clientSocket, packet, rply_packet, &rply_size)) {
- case 0:
- @@ -420,6 +412,15 @@
-
- /* Otherwise, the already-formed reply will do fine, so send it */
- }
- + /* send echo request packet if we have not heard from the TCP socket in IDLE_TIME */
- + } else if (echo_wait != TRUE && (time(NULL) - last_time) > IDLE_WAIT) {
- + echo_count++;
- + if (pptpctrl_debug)
- + syslog(LOG_DEBUG, "CTRL: Sending ECHO REQ id %d", echo_count);
- + time(&echo_time);
- + make_echo_req_packet(rply_packet, &rply_size, echo_count);
- + echo_wait = TRUE;
- + send_packet = TRUE;
- }
-
- /* send reply packet - this may block, but it should be very rare */
|