return;
ic->flags |= CF_SHUTR;
ic->rex = TICK_ETERNITY;
- si->flags &= ~SI_FL_WAIT_ROOM;
+ si_done_put(si);
if (si->state != SI_ST_EST && si->state != SI_ST_CON)
return;
return;
oc->flags |= CF_SHUTW;
oc->wex = TICK_ETERNITY;
- si->flags &= ~SI_FL_WAIT_DATA;
+ si_done_get(si);
if (tick_isset(si->hcto)) {
ic->rto = si->hcto;
/* Note that none of these states may happen with applets */
si->state = SI_ST_DIS;
default:
- si->flags &= ~(SI_FL_WAIT_ROOM | SI_FL_NOLINGER);
+ si->flags &= ~(SI_FL_WAIT_ROOM | SI_FL_WANT_PUT | SI_FL_NOLINGER);
ic->flags &= ~CF_SHUTR_NOW;
ic->flags |= CF_SHUTR;
ic->rex = TICK_ETERNITY;
return;
ic->flags |= CF_SHUTR;
ic->rex = TICK_ETERNITY;
- si->flags &= ~SI_FL_WAIT_ROOM;
+ si_done_put(si);
if (si->state != SI_ST_EST && si->state != SI_ST_CON)
return;
return;
oc->flags |= CF_SHUTW;
oc->wex = TICK_ETERNITY;
- si->flags &= ~SI_FL_WAIT_DATA;
+ si_done_get(si);
if (tick_isset(si->hcto)) {
ic->rto = si->hcto;
si->state = SI_ST_DIS;
/* fall through */
default:
- si->flags &= ~(SI_FL_WAIT_ROOM | SI_FL_NOLINGER);
+ si->flags &= ~(SI_FL_WAIT_ROOM | SI_FL_WANT_PUT | SI_FL_NOLINGER);
ic->flags &= ~CF_SHUTR_NOW;
ic->flags |= CF_SHUTR;
ic->rex = TICK_ETERNITY;
return;
ic->flags |= CF_SHUTR;
ic->rex = TICK_ETERNITY;
- si->flags &= ~SI_FL_WAIT_ROOM;
+ si_done_put(si);
if (si->state != SI_ST_EST && si->state != SI_ST_CON)
return;
oc->flags |= CF_SHUTW;
oc->wex = TICK_ETERNITY;
- si->flags &= ~(SI_FL_WAIT_DATA | SI_FL_WAIT_ROOM);
+ si_done_get(si);
si->state = SI_ST_DIS;
si->exp = TICK_ETERNITY;
return;
ic->flags |= CF_SHUTR;
ic->rex = TICK_ETERNITY;
- si->flags &= ~SI_FL_WAIT_ROOM;
+ si_done_put(si);
/* Note: on shutr, we don't call the applet */
return;
oc->flags |= CF_SHUTW;
oc->wex = TICK_ETERNITY;
- si->flags &= ~SI_FL_WAIT_DATA;
+ si_done_get(si);
if (tick_isset(si->hcto)) {
ic->rto = si->hcto;
si_applet_release(si);
si->state = SI_ST_DIS;
default:
- si->flags &= ~(SI_FL_WAIT_ROOM | SI_FL_NOLINGER);
+ si->flags &= ~(SI_FL_WAIT_ROOM | SI_FL_WANT_PUT | SI_FL_NOLINGER);
ic->flags &= ~CF_SHUTR_NOW;
ic->flags |= CF_SHUTR;
ic->rex = TICK_ETERNITY;