Revision f932b6ce slirp/socket.c

b/slirp/socket.c
581 581
	 */
582 582
	if (so->so_expire)
583 583
		so->so_expire = curtime + SO_EXPIRE;
584
	so->so_state = SS_ISFCONNECTED; /* So that it gets select()ed */
584
	so->so_state &= SS_PERSISTENT_MASK;
585
	so->so_state |= SS_ISFCONNECTED; /* So that it gets select()ed */
585 586
	return 0;
586 587
}
587 588

  
......
620 621
	if (flags & SS_FACCEPTONCE)
621 622
	   so->so_tcpcb->t_timer[TCPT_KEEP] = TCPTV_KEEP_INIT*2;
622 623

  
623
	so->so_state = (SS_FACCEPTCONN|flags);
624
	so->so_state &= SS_PERSISTENT_MASK;
625
	so->so_state |= (SS_FACCEPTCONN | flags);
624 626
	so->so_lport = lport; /* Kept in network format */
625 627
	so->so_laddr.s_addr = laddr; /* Ditto */
626 628

  
......
715 717
		}
716 718
	}
717 719
	so->so_state &= ~(SS_ISFCONNECTING);
718
	if (so->so_state & SS_FCANTSENDMORE)
719
	   so->so_state = SS_NOFDREF; /* Don't select it */ /* XXX close() here as well? */
720
	else
720
	if (so->so_state & SS_FCANTSENDMORE) {
721
	   so->so_state &= SS_PERSISTENT_MASK;
722
	   so->so_state |= SS_NOFDREF; /* Don't select it */
723
	} else {
721 724
	   so->so_state |= SS_FCANTRCVMORE;
725
	}
722 726
}
723 727

  
724 728
static void
......
734 738
            }
735 739
	}
736 740
	so->so_state &= ~(SS_ISFCONNECTING);
737
	if (so->so_state & SS_FCANTRCVMORE)
738
	   so->so_state = SS_NOFDREF; /* as above */
739
	else
741
	if (so->so_state & SS_FCANTRCVMORE) {
742
	   so->so_state &= SS_PERSISTENT_MASK;
743
	   so->so_state |= SS_NOFDREF; /* as above */
744
	} else {
740 745
	   so->so_state |= SS_FCANTSENDMORE;
746
	}
741 747
}
742 748

  
743 749
void

Also available in: Unified diff