diff options
author | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2010-04-01 07:21:47 +0000 |
---|---|---|
committer | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2010-04-01 07:21:47 +0000 |
commit | 969d9523ffe3283fce547597835584f707c2043a (patch) | |
tree | 6eae46b5bdb60eb3afcf0ad33cea9950e2e05126 | |
parent | 6a72fbae62a30d52915d055e06c1987d0041fbaa (diff) |
iemnet__sender_destroy() now also closes the socket
svn path=/trunk/externals/iem/iemnet/; revision=13332
-rw-r--r-- | iemnet_sender.c | 6 |
1 files changed, 6 insertions, 0 deletions
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); |