aboutsummaryrefslogtreecommitdiff
path: root/tcpserver.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-03-29 14:10:22 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-03-29 14:10:22 +0000
commita4f7c437b828b67da222e971c54e855b4dd67be5 (patch)
treea0dde9e53b446f477991b8cfdaa498b1c969e105 /tcpserver.c
parentddcc2af3adab158592f195aa6b9e9d73be3f37a8 (diff)
provide feedback to Pd main-thread whether sender-thread still exists
svn path=/trunk/externals/iem/iemnet/; revision=13300
Diffstat (limited to 'tcpserver.c')
-rw-r--r--tcpserver.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/tcpserver.c b/tcpserver.c
index 8a5673b..fc2cd0f 100644
--- a/tcpserver.c
+++ b/tcpserver.c
@@ -148,7 +148,7 @@ static int tcpserver_fixindex(t_tcpserver*x, int client)
}
/* ---------------- main tcpserver (send) stuff --------------------- */
-
+static void tcpserver_disconnect_socket(t_tcpserver *x, t_floatarg fsocket);
static void tcpserver_send_bytes(t_tcpserver*x, int client, t_iemnet_chunk*chunk)
{
if(x && x->x_sr && x->x_sr[client]) {
@@ -166,6 +166,11 @@ static void tcpserver_send_bytes(t_tcpserver*x, int client, t_iemnet_chunk*chunk
SETFLOAT(&output_atom[1], size);
SETFLOAT(&output_atom[2], sockfd);
outlet_anything( x->x_status_outlet, gensym("sent"), 3, output_atom);
+
+ if(size<0) {
+ // disconnected!
+ tcpserver_disconnect_socket(x, sockfd);
+ }
}
}