From 969d9523ffe3283fce547597835584f707c2043a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Thu, 1 Apr 2010 07:21:47 +0000 Subject: iemnet__sender_destroy() now also closes the socket svn path=/trunk/externals/iem/iemnet/; revision=13332 --- iemnet_sender.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/iemnet_sender.c b/iemnet_sender.c index 0d6701c..a45ae10 100644 --- a/iemnet_sender.c +++ b/iemnet_sender.c @@ -95,6 +95,7 @@ int iemnet__sender_send(t_iemnet_sender*s, t_iemnet_chunk*c) { } void iemnet__sender_destroy(t_iemnet_sender*s) { + int sockfd=s->sockfd; /* simple protection against recursive calls: * s->keepsending is only set to "0" in here, * so if it is false, we know that we are already being called @@ -106,6 +107,11 @@ void iemnet__sender_destroy(t_iemnet_sender*s) { queue_finish(s->queue); DEBUG("queue finished"); s->sockfd = -1; + + if(sockfd>=0) { + shutdown(sockfd, 2); /* needed on linux, since the recv won't shutdown on sys_closesocket() alone */ + sys_closesocket(sockfd); + } pthread_join(s->thread, NULL); DEBUG("thread joined"); queue_destroy(s->queue); -- cgit v1.2.1