Actions
Bug #5735
openctl client disconnect doesn't re-set timeslot state
Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
11/01/2022
Due date:
% Done:
0%
Spec Reference:
Description
When a ctl client socket gets closed (client disconnects/crashes), we are cleaning up that ctl socket, but we don't clean up other state, such as
- the fact that a given timeslot is no longer open (subsequent open of that TS gets a "cannot re-open unless FORCE option is used" error)
- the socketpair() file-descriptors for the per-timeslot data are not closed
It's currently not possible to fix this directly, as nothing in osmo-e1d tracks the relationship of client<->timeslot. So without that state, we cannot clean up.
Updated by laforge about 1 year ago
if e1d is trying to write to that per-ts socket, it will of course get a "broken pipe" error.
<0000> mux_demux.c:318 (I3:L0:T2) dead socket during write: Broken pipeHowever, this only happens the next time something needs to be written. This may not be the case as
- no data is received from E1 (link down)
- the timeslot is in HDLC mode, and no new HDLC frame arrives after the client disappeared
In such cases, the old socket/fd is lingering around.
Updated by laforge about 1 year ago
This may also be an artefact of not including those socket-fd's in our select/poll handling. If we were registering them at least for POLLHUP, we might get a notification that way.
Actions