From e6f799e41d7910e1388c68630c49bf3141cb8d9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Tue, 1 Sep 2015 14:30:54 +0000 Subject: sync with git svn path=/trunk/externals/iem/iemnet/; revision=17545 --- udpreceive.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'udpreceive.c') diff --git a/udpreceive.c b/udpreceive.c index 5fc092e..7aaca12 100644 --- a/udpreceive.c +++ b/udpreceive.c @@ -1,5 +1,5 @@ /* udpreceive.c - * copyright (c) 2010 IOhannes m zmölnig, IEM + * copyright © 2010-2015 IOhannes m zmölnig, IEM * copyright (c) 2006-2010 Martin Peach * copyright (c) Miller Puckette */ @@ -57,7 +57,7 @@ static void udpreceive_read_callback(void*y, t_iemnet_chunk*c) outlet_list(x->x_msgout, gensym("list"), x->x_floatlist->argc, x->x_floatlist->argv); } else { - post("[%s] nothing received", objName); + iemnet_log(x, IEMNET_VERBOSE, "nothing received"); } } @@ -76,13 +76,15 @@ static int udpreceive_setport(t_udpreceive*x, unsigned short portno) /* cleanup any open ports */ if(sockfd>=0) { iemnet__receiver_destroy(x->x_receiver, 0); + iemnet__closesocket(sockfd); x->x_connectsocket=-1; x->x_port=-1; } sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd<0) { - pd_error(x, "[%s]: unable to create socket", objName); + iemnet_log(x, IEMNET_ERROR, "unable to create socket"); + sys_sockerror("socket"); return 0; } @@ -93,7 +95,8 @@ static int udpreceive_setport(t_udpreceive*x, unsigned short portno) if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (void *)&intarg, sizeof(intarg)) < 0) { - pd_error(x, "[%s]: setsockopt (SO_REUSEADDR) failed", objName); + iemnet_log(x, IEMNET_ERROR, "unable to enable address re-using"); + sys_sockerror("setsockopt:SO_REUSEADDR"); } } #endif /* SO_REUSEADDR */ @@ -103,7 +106,8 @@ static int udpreceive_setport(t_udpreceive*x, unsigned short portno) if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, (void *)&intarg, sizeof(intarg)) < 0) { - pd_error(x, "[%s]: setsockopt (SO_REUSEPORT) failed", objName); + iemnet_log(x, IEMNET_ERROR, "unable to enable port re-using"); + sys_sockerror("setsockopt:SO_REUSEPORT"); } } #endif /* SO_REUSEPORT */ @@ -114,7 +118,8 @@ static int udpreceive_setport(t_udpreceive*x, unsigned short portno) /* name the socket */ if (bind(sockfd, (struct sockaddr *)&server, serversize) < 0) { - sys_sockerror("[udpreceive] bind failed"); + iemnet_log(x, IEMNET_ERROR, "unable to bind to socket"); + sys_sockerror("bind"); iemnet__closesocket(sockfd); sockfd = -1; return 0; @@ -141,7 +146,7 @@ static void udpreceive_port(t_udpreceive*x, t_symbol*s, int argc, t_atom ap[1]; if(argc) { if(argc>1 || A_FLOAT != argv->a_type) { - pd_error(x, "[%s] usage: port []", objName); + iemnet_log(x, IEMNET_ERROR, "usage: %s []", s->s_name); return; } SETFLOAT(ap, -1); @@ -166,7 +171,7 @@ static void udpreceive_optionI(t_udpreceive*x, t_symbol*s, int argc, } if(!reuse) { - pd_error(x, "[%s]: unknown option '%s'", objName, s->s_name); + iemnet_log(x, IEMNET_ERROR, "unknown option '%s'", s->s_name); return; } if(argc) { @@ -174,7 +179,7 @@ static void udpreceive_optionI(t_udpreceive*x, t_symbol*s, int argc, *reuse=atom_getint(argv); return; } else { - pd_error(x, "[%s] usage: %s []", objName, s->s_name); + iemnet_log(x, IEMNET_ERROR, "usage: %s []", s->s_name); return; } } else { @@ -208,8 +213,14 @@ static void *udpreceive_new(t_floatarg fportno) static void udpreceive_free(t_udpreceive *x) { - iemnet__receiver_destroy(x->x_receiver, 0); - x->x_connectsocket=0; + if(x->x_receiver) { + iemnet__receiver_destroy(x->x_receiver, 0); + } + x->x_receiver=NULL; + if(x->x_connectsocket >= 0) { + iemnet__closesocket(x->x_connectsocket); + } + x->x_connectsocket=-1; outlet_free(x->x_msgout); outlet_free(x->x_addrout); -- cgit v1.2.1