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