From: Martin Willi Date: Tue, 2 Jul 2013 12:04:51 +0000 (+0200) Subject: stream: don't close underlying socket when creating a stream from it X-Git-Tag: 5.1.0rc1~10^2~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9d1742b5da37de26ed622e3b1317572da2f4978;p=thirdparty%2Fstrongswan.git stream: don't close underlying socket when creating a stream from it --- diff --git a/src/libstrongswan/networking/streams/stream_service.c b/src/libstrongswan/networking/streams/stream_service.c index 1b06e1eb14..c2681af3a3 100644 --- a/src/libstrongswan/networking/streams/stream_service.c +++ b/src/libstrongswan/networking/streams/stream_service.c @@ -109,7 +109,10 @@ static void destroy_async_data(async_data_t *data) this->condvar->signal(this->condvar); this->mutex->unlock(this->mutex); - close(data->fd); + if (data->fd != -1) + { + close(data->fd); + } free(data); } @@ -123,6 +126,8 @@ static job_requeue_t accept_async(async_data_t *data) stream = stream_create_from_fd(data->fd); if (stream) { + /* FD is now owned by stream, don't close it during cleanup */ + data->fd = -1; thread_cleanup_push((void*)stream->destroy, stream); thread_cleanup_pop(!data->cb(data->data, stream)); }