Project

General

Profile

Actions

Bug #5735

open

ctl client disconnect doesn't re-set timeslot state

Added by laforge over 1 year ago. Updated 9 months ago.

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.

Actions #1

Updated by laforge over 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 pipe

However, 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.

Actions #2

Updated by laforge over 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 #3

Updated by laforge 9 months ago

  • Assignee deleted (laforge)
Actions

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)