bankd: initialize bank_id/slot_nr to 0xffff for unmapped workers

Otherwise the loop for SIGMAPDEL delivery code will match any
unused worker for bank_id=0/slot_nr=0, which is not what we want.

This also makes repeated RemsimBankd_Tests.TC_removeMapping_connected
runs work reliably.

Change-Id: I6976eb96feae6a3b66bacf787e436a2df29f9ce0
This commit is contained in:
Harald Welte 2019-12-04 21:51:02 +01:00
parent d9fb93991b
commit 602b6f7763
1 changed files with 5 additions and 0 deletions

View File

@ -411,6 +411,8 @@ static void handle_sig_mapdel(int sig)
{
LOGW(g_worker, "SIGMAPDEL received: Main thread informs us our map is gone\n");
OSMO_ASSERT(sig == SIGMAPDEL);
g_worker->slot.bank_id = 0xffff;
g_worker->slot.slot_nr = 0xffff;
worker_set_state(g_worker, BW_ST_CONN_CLIENT_UNMAPPED);
}
@ -852,6 +854,9 @@ static void *worker_main(void *arg)
/* push cleanup helper */
pthread_cleanup_push(&worker_cleanup, g_worker);
g_worker->slot.bank_id = 0xffff;
g_worker->slot.slot_nr = 0xffff;
/* we continuously perform the same loop here, recycling the worker thread
* once the client connection is gone or we have some trouble with the card/reader */
while (1) {