Attention is currently required from: pespin.

fixeria uploaded patch set #6 to this change.

View Change

The following approvals got outdated and were removed: Verified+1 by Jenkins Builder

libosmo-trx/ep: flush pending TRXC messages on endpoint teardown

osmo_trx_ep_close() used to drop any still-queued ctrl socket Tx data
via osmo_iofd_free(), including a 'goodbye' TRXC message (i.e. "CMD
POWEROFF") that may have just been enqueued right before teardown.

Detach such a ctrl_iofd from the endpoint (which may be freed right
after osmo_trx_ep_close() returns) and let it live on its own, driven
by the same event loop, until the pending write(s) complete (or fail),
at which point it closes and frees itself. Data sockets and pending
Tx data batches (TRXDv2 batching, see chan->tx_msg) are still dropped
immediately, as before.

Expose the "still flushing" state via the new osmo_trx_ep_is_closing(),
so a caller can tell it apart from fully closed: re-opening the same
ports while a flush is still in flight would otherwise risk a confusing
EADDRINUSE, so osmo_trx_ep_open() now returns -EBUSY in that case.
osmo_trx_ep_free() detaches any flush still in progress (clearing its
back-pointer to the endpoint) instead of leaving it to touch the
endpoint after it is gone.

This follows the async-flush pattern used by osmo-pcap's
osmo_pcap_wr_file_flush()/_is_flushing(), adapted to the osmo_io API
(there is no osmo_iofd_flush()).

Change-Id: I69e6a3bcf49afc3cfca4a72afdf459625cb91e56
---
M libosmo-trx/include/osmocom/trx/ep.h
M libosmo-trx/src/trx_ep.c
M tests/libosmo-trx/trx_ep_test.c
M tests/libosmo-trx/trx_ep_test.err
M tests/libosmo-trx/trx_ep_test.ok
5 files changed, 184 insertions(+), 7 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/12/43112/6

To view, visit change 43112. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newpatchset
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Change-Id: I69e6a3bcf49afc3cfca4a72afdf459625cb91e56
Gerrit-Change-Number: 43112
Gerrit-PatchSet: 6
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin@sysmocom.de>
Gerrit-Attention: pespin <pespin@sysmocom.de>