From d8ace91bcfb35fcf47142c137a0d73c7b8bcdfd6 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Sat, 4 Jun 2016 21:38:43 +0200 Subject: [PATCH] - iso_server.c: fixed bug in multi-threaded version: segfault when conection unexpectedly closed --- config/stack_config.h | 2 +- src/mms/iso_server/iso_server.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/config/stack_config.h b/config/stack_config.h index 51ae3cfb..5cbdecba 100644 --- a/config/stack_config.h +++ b/config/stack_config.h @@ -36,7 +36,7 @@ * 0 ==> server runs in multi-threaded mode (one thread for each connection and * one server background thread ) */ -#define CONFIG_MMS_SINGLE_THREADED 1 +#define CONFIG_MMS_SINGLE_THREADED 0 /* * Optimize stack for threadless operation - don't use semaphores diff --git a/src/mms/iso_server/iso_server.c b/src/mms/iso_server/iso_server.c index 577a95ee..d67f31c0 100644 --- a/src/mms/iso_server/iso_server.c +++ b/src/mms/iso_server/iso_server.c @@ -561,8 +561,11 @@ IsoServer_waitReady(IsoServer self, unsigned int timeoutMs) if (self->openClientConnections[i] != NULL) { if (IsoConnection_isRunning(self->openClientConnections[i])) { IsoConnection_addHandleSet(self->openClientConnections[i], handles); - } else { + } + else { +#if ((CONFIG_MMS_SINGLE_THREADED == 1) || (CONFIG_MMS_THREADLESS_STACK == 1)) IsoConnection_destroy(self->openClientConnections[i]); +#endif self->openClientConnections[i] = NULL; } }