BUG: stream_sock: si->release was not called upon shutw()
The ->release function of the stream interface is never called upon a shutw() because it's placed after a return statement. It is possible that it has impacted inter-process stick-table replication by preventing a full resync after certain sequences of connection breakage. Since this bug has been present since the introduction of the ->release() callback, it cannot have caused regressions, just possibly non-working situations. This was detected at Exceliance by Emeric Brun during a code review. It is 1.5-specific.
This commit is contained in:
parent
62e7c7146e
commit
ad4cd58986
|
@ -885,16 +885,15 @@ void stream_sock_shutw(struct stream_interface *si)
|
|||
case SI_ST_QUE:
|
||||
case SI_ST_TAR:
|
||||
si->state = SI_ST_DIS;
|
||||
|
||||
if (si->release)
|
||||
si->release(si);
|
||||
default:
|
||||
si->flags &= ~SI_FL_WAIT_ROOM;
|
||||
si->ib->flags |= BF_SHUTR;
|
||||
si->ib->rex = TICK_ETERNITY;
|
||||
si->exp = TICK_ETERNITY;
|
||||
return;
|
||||
}
|
||||
|
||||
if (si->release)
|
||||
si->release(si);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue