/[lwip]/lwip/src/core/tcp.c
ViewVC logotype

Diff of /lwip/src/core/tcp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by adamdunkels, Fri Nov 15 09:40:05 2002 UTC revision 1.6 by likewise, Thu Nov 21 10:29:51 2002 UTC
# Line 461  tcp_slowtmr(void) Line 461  tcp_slowtmr(void)
461    /* Steps through all of the active PCBs. */    /* Steps through all of the active PCBs. */
462    prev = NULL;    prev = NULL;
463    pcb = tcp_active_pcbs;    pcb = tcp_active_pcbs;
464      if (pcb == NULL) DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs"));
465    while(pcb != NULL) {    while(pcb != NULL) {
466        DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb"));
467      ASSERT("tcp_timer_coarse: active pcb->state != CLOSED", pcb->state != CLOSED);      ASSERT("tcp_timer_coarse: active pcb->state != CLOSED", pcb->state != CLOSED);
468      ASSERT("tcp_timer_coarse: active pcb->state != LISTEN", pcb->state != LISTEN);      ASSERT("tcp_timer_coarse: active pcb->state != LISTEN", pcb->state != LISTEN);
469      ASSERT("tcp_timer_coarse: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);      ASSERT("tcp_timer_coarse: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);
# Line 470  tcp_slowtmr(void) Line 472  tcp_slowtmr(void)
472    
473      if(pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) {      if(pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) {
474        ++pcb_remove;        ++pcb_remove;
475      } else if(pcb->nrtx == TCP_MAXRTX) {        DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached"));
476        }
477        else if(pcb->nrtx == TCP_MAXRTX) {
478        ++pcb_remove;        ++pcb_remove;
479          DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached"));
480      } else {      } else {
481        ++pcb->rtime;        ++pcb->rtime;
482        if(pcb->unacked != NULL && pcb->rtime >= pcb->rto) {        if(pcb->unacked != NULL && pcb->rtime >= pcb->rto) {
# Line 506  tcp_slowtmr(void) Line 511  tcp_slowtmr(void)
511        if((u32_t)(tcp_ticks - pcb->tmr) >        if((u32_t)(tcp_ticks - pcb->tmr) >
512           TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) {           TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) {
513          ++pcb_remove;          ++pcb_remove;
514            DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in FIN-WAIT-2"));
515        }        }
516      }      }
517    
# Line 518  tcp_slowtmr(void) Line 524  tcp_slowtmr(void)
524         pcb->rto * TCP_OOSEQ_TIMEOUT) {         pcb->rto * TCP_OOSEQ_TIMEOUT) {
525        tcp_segs_free(pcb->ooseq);        tcp_segs_free(pcb->ooseq);
526        pcb->ooseq = NULL;        pcb->ooseq = NULL;
527          DEBUGF(TCP_CWND_DEBUG, ("tcp: dropping OOSEQ queued data\n"));
528      }      }
529  #endif /* TCP_QUEUE_OOSEQ */  #endif /* TCP_QUEUE_OOSEQ */
530    
# Line 526  tcp_slowtmr(void) Line 533  tcp_slowtmr(void)
533        if((u32_t)(tcp_ticks - pcb->tmr) >        if((u32_t)(tcp_ticks - pcb->tmr) >
534           TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) {           TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) {
535          ++pcb_remove;          ++pcb_remove;
536            DEBUGF(TCP_DEBUG, ("tcp_slottmr: removing pcb stuck in SYN-RCVD\n"));
537        }        }
538      }      }
539    
# Line 554  tcp_slowtmr(void) Line 562  tcp_slowtmr(void)
562        ++pcb->polltmr;        ++pcb->polltmr;
563        if(pcb->polltmr >= pcb->pollinterval) {        if(pcb->polltmr >= pcb->pollinterval) {
564          pcb->polltmr = 0;          pcb->polltmr = 0;
565            DEBUGF(TCP_DEBUG, ("tcp_slottmr: polling application\n"));
566          TCP_EVENT_POLL(pcb, err);          TCP_EVENT_POLL(pcb, err);
567          if(err == ERR_OK) {          if(err == ERR_OK) {
568            tcp_output(pcb);            tcp_output(pcb);
# Line 957  tcp_pcb_purge(struct tcp_pcb *pcb) Line 966  tcp_pcb_purge(struct tcp_pcb *pcb)
966      if(pcb->unacked != NULL) {          if(pcb->unacked != NULL) {    
967        DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n"));        DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n"));
968      }      }
969    #if TCP_QUEUE_OOSEQ // LW
970      if(pcb->ooseq != NULL) {          if(pcb->ooseq != NULL) {    
971        DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n"));        DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n"));
972      }      }
973    #endif
974  #endif /* TCP_DEBUG */  #endif /* TCP_DEBUG */
975      tcp_segs_free(pcb->unsent);      tcp_segs_free(pcb->unsent);
976  #if TCP_QUEUE_OOSEQ  #if TCP_QUEUE_OOSEQ

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26