aboutsummaryrefslogtreecommitdiff
path: root/udpreceive.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2015-09-01 14:30:54 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2015-09-01 14:30:54 +0000
commite6f799e41d7910e1388c68630c49bf3141cb8d9c (patch)
tree442af8d11ad2ca606f0622bf30a88db4e8fa5541 /udpreceive.c
parentf628926f7ff2d494667bc14bc5d0cbcba02de5db (diff)
sync with git
svn path=/trunk/externals/iem/iemnet/; revision=17545
Diffstat (limited to 'udpreceive.c')
-rw-r--r--udpreceive.c33
1 files changed, 22 insertions, 11 deletions
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 [<portnum>]", objName);
+ iemnet_log(x, IEMNET_ERROR, "usage: %s [<portnum>]", 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 [<val>]", objName, s->s_name);
+ iemnet_log(x, IEMNET_ERROR, "usage: %s [<val>]", 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);