From bc8556eafb819ac0ff6efb1f5d59d15f424babcd Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Wed, 27 Nov 2024 16:51:13 +0100 Subject: [PATCH] Implement RFsim stopServer: close listen socket, free memory --- radio/rfsimulator/simulator.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/radio/rfsimulator/simulator.c b/radio/rfsimulator/simulator.c index d362d5ef7b..faa185a0cb 100644 --- a/radio/rfsimulator/simulator.c +++ b/radio/rfsimulator/simulator.c @@ -1085,7 +1085,16 @@ static void rfsimulator_end(openair0_device *device) { } close(s->epollfd); hashtable_destroy(&s->fd_to_buf_map); + free(s); } +static void stopServer(openair0_device *device) +{ + rfsimulator_state_t *t = (rfsimulator_state_t *) device->priv; + DevAssert(t != NULL); + close(t->listen_sock); + rfsimulator_end(device); +} + static int rfsimulator_stop(openair0_device *device) { return 0; } @@ -1136,7 +1145,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) { device->trx_start_func = rfsimulator->role == SIMU_ROLE_SERVER ? startServer : startClient; device->trx_get_stats_func = rfsimulator_get_stats; device->trx_reset_stats_func = rfsimulator_reset_stats; - device->trx_end_func = rfsimulator_end; + device->trx_end_func = rfsimulator->role == SIMU_ROLE_SERVER ? stopServer : rfsimulator_end; device->trx_stop_func = rfsimulator_stop; device->trx_set_freq_func = rfsimulator_set_freq; device->trx_set_gains_func = rfsimulator_set_gains;