aboutsummaryrefslogtreecommitdiff
path: root/tcpclient.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-03-29 13:07:03 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-03-29 13:07:03 +0000
commitcedd3449faaafba0101b44c581c905ba7cd701c7 (patch)
treed3b52c55de450b5830acc42c0d70c1667cb93681 /tcpclient.c
parente9bad3d81d309cb6562031b5ddf8d4350bc9b34b (diff)
clean up more properly on disconnect
disconnecting has the awful tendency to trigger itself; for now, this is handled in the calling object's code, but later iemnet_(sender|receiver) should take care themselves svn path=/trunk/externals/iem/iemnet/; revision=13298
Diffstat (limited to 'tcpclient.c')
-rw-r--r--tcpclient.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/tcpclient.c b/tcpclient.c
index 5c396db..37434b7 100644
--- a/tcpclient.c
+++ b/tcpclient.c
@@ -23,6 +23,7 @@
/* */
/* ---------------------------------------------------------------------------- */
+//#define DEBUG
#include "iemnet.h"
#include <string.h>
@@ -147,11 +148,16 @@ static void tcpclient_disconnect(t_tcpclient *x)
{
if (x->x_fd >= 0)
{
+ int fd=x->x_fd;
+ x->x_fd = -1;
+
+ DEBUG("disconnecting %x", x);
if(x->x_sender)iemnet__sender_destroy(x->x_sender); x->x_sender=NULL;
if(x->x_receiver)iemnet__receiver_destroy(x->x_receiver); x->x_receiver=NULL;
+ DEBUG("disconnect cleaning up %x", x);
+ sys_closesocket(fd);
+
- sys_closesocket(x->x_fd);
- x->x_fd = -1;
x->x_connectstate = 0;
outlet_float(x->x_connectout, 0);
}