Diff for /qemu/slirp/tcp_input.c between versions 1.1.1.5 and 1.1.1.6

version 1.1.1.5, 2018/04/24 17:25:56 version 1.1.1.6, 2018/04/24 18:31:24
Line 280  tcp_input(struct mbuf *m, int iphlen, st Line 280  tcp_input(struct mbuf *m, int iphlen, st
         tcpiphdr2qlink(ti)->next = tcpiphdr2qlink(ti)->prev = NULL;          tcpiphdr2qlink(ti)->next = tcpiphdr2qlink(ti)->prev = NULL;
         memset(&ti->ti_i.ih_mbuf, 0 , sizeof(struct mbuf_ptr));          memset(&ti->ti_i.ih_mbuf, 0 , sizeof(struct mbuf_ptr));
         ti->ti_x1 = 0;          ti->ti_x1 = 0;
         ti->ti_len = htons((u_int16_t)tlen);          ti->ti_len = htons((uint16_t)tlen);
         len = sizeof(struct ip ) + tlen;          len = sizeof(struct ip ) + tlen;
         if(cksum(m, len)) {          if(cksum(m, len)) {
           goto drop;            goto drop;
Line 597  findso: Line 597  findso:
               *ip=save_ip;                *ip=save_ip;
               icmp_error(m, ICMP_UNREACH,code, 0,strerror(errno));                icmp_error(m, ICMP_UNREACH,code, 0,strerror(errno));
             }              }
             tp = tcp_close(tp);              tcp_close(tp);
             m_free(m);              m_free(m);
           } else {            } else {
             /*              /*
Line 660  findso: Line 660  findso:
                         goto dropwithreset;                          goto dropwithreset;
   
                 if (tiflags & TH_RST) {                  if (tiflags & TH_RST) {
                         if (tiflags & TH_ACK)                          if (tiflags & TH_ACK) {
                                 tp = tcp_drop(tp,0); /* XXX Check t_softerror! */                                  tcp_drop(tp, 0); /* XXX Check t_softerror! */
                           }
                         goto drop;                          goto drop;
                 }                  }
   
Line 821  trimthenstep6: Line 822  trimthenstep6:
         case TCPS_FIN_WAIT_2:          case TCPS_FIN_WAIT_2:
         case TCPS_CLOSE_WAIT:          case TCPS_CLOSE_WAIT:
                 tp->t_state = TCPS_CLOSED;                  tp->t_state = TCPS_CLOSED;
                 tp = tcp_close(tp);                  tcp_close(tp);
                 goto drop;                  goto drop;
   
         case TCPS_CLOSING:          case TCPS_CLOSING:
         case TCPS_LAST_ACK:          case TCPS_LAST_ACK:
         case TCPS_TIME_WAIT:          case TCPS_TIME_WAIT:
                 tp = tcp_close(tp);                  tcp_close(tp);
                 goto drop;                  goto drop;
         }          }
   
Line 1074  trimthenstep6: Line 1075  trimthenstep6:
                  */                   */
                 case TCPS_LAST_ACK:                  case TCPS_LAST_ACK:
                         if (ourfinisacked) {                          if (ourfinisacked) {
                                 tp = tcp_close(tp);                                  tcp_close(tp);
                                 goto drop;                                  goto drop;
                         }                          }
                         break;                          break;
Line 1165  dodata: Line 1166  dodata:
         if ((ti->ti_len || (tiflags&TH_FIN)) &&          if ((ti->ti_len || (tiflags&TH_FIN)) &&
             TCPS_HAVERCVDFIN(tp->t_state) == 0) {              TCPS_HAVERCVDFIN(tp->t_state) == 0) {
                 TCP_REASS(tp, ti, m, so, tiflags);                  TCP_REASS(tp, ti, m, so, tiflags);
                 /*  
                  * Note the amount of data that peer has sent into  
                  * our window, in order to estimate the sender's  
                  * buffer size.  
                  */  
                 len = so->so_rcv.sb_datalen - (tp->rcv_adv - tp->rcv_nxt);  
         } else {          } else {
                 m_free(m);                  m_free(m);
                 tiflags &= ~TH_FIN;                  tiflags &= ~TH_FIN;
Line 1294  drop: Line 1289  drop:
 static void  static void
 tcp_dooptions(struct tcpcb *tp, u_char *cp, int cnt, struct tcpiphdr *ti)  tcp_dooptions(struct tcpcb *tp, u_char *cp, int cnt, struct tcpiphdr *ti)
 {  {
         u_int16_t mss;          uint16_t mss;
         int opt, optlen;          int opt, optlen;
   
         DEBUG_CALL("tcp_dooptions");          DEBUG_CALL("tcp_dooptions");

Removed from v.1.1.1.5  
changed lines
  Added in v.1.1.1.6


unix.superglobalmegacorp.com