aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/udpreceive~.c37
-rw-r--r--net/udpsend~.c2
-rw-r--r--net/udpsend~.h2
3 files changed, 23 insertions, 18 deletions
diff --git a/net/udpreceive~.c b/net/udpreceive~.c
index 263ac05..f0f1759 100644
--- a/net/udpreceive~.c
+++ b/net/udpreceive~.c
@@ -200,8 +200,7 @@ static void udpreceive_tilde_datapoll(t_udpreceive_tilde *x)
if (ret <= 0) /* error */
{
- if (udpreceive_tilde_sockerror("recv tag"))
- goto bail;
+ if (0 == udpreceive_tilde_sockerror("recv tag")) return;
udpreceive_tilde_reset(x, 0);
x->x_counter = 0;
return;
@@ -235,8 +234,16 @@ static void udpreceive_tilde_datapoll(t_udpreceive_tilde *x)
}
else if (ret < 0) /* error */
{
- if (udpreceive_tilde_sockerror("recv data"))
- goto bail;
+ if ( 0 == (ret = udpreceive_tilde_sockerror("recv data"))) return;
+#ifdef _WIN32
+ if ( ret == WSAEFAULT)
+#else
+ if ( ret == EFAULT)
+#endif
+ {
+ post ("udpreceive~: EFAULT: %p %lu %d", x->x_frames[x->x_framein].data, x->x_frames[x->x_framein].tag.framesize, n);
+ return;
+ }
udpreceive_tilde_reset(x, 0);
x->x_counter = 0;
return;
@@ -261,8 +268,6 @@ static void udpreceive_tilde_datapoll(t_udpreceive_tilde *x)
}
}
}
-bail:
-;
}
static void udpreceive_tilde_connectpoll(t_udpreceive_tilde *x)
@@ -309,7 +314,7 @@ static int udpreceive_tilde_createsocket(t_udpreceive_tilde* x, int portno)
/* assign server port number */
server.sin_port = htons((u_short)portno);
- post("listening to port number %d", portno);
+ post("udpreceive~: listening to port number %d", portno);
udpreceive_tilde_setsocketoptions(sockfd);
@@ -479,7 +484,7 @@ static void udpreceive_tilde_dsp(t_udpreceive_tilde *x, t_signal **sp)
if (x->x_blocksize % sp[0]->s_n)
{
- error("netsend~: signal vector size too large (needs to be even divisor of %d)", x->x_blocksize);
+ error("udpreceive~: signal vector size too large (needs to be even divisor of %d)", x->x_blocksize);
}
else
{
@@ -709,11 +714,11 @@ static int udpreceive_tilde_sockerror(char *s)
#ifdef _WIN32
int err = WSAGetLastError();
if (err == 10054) return 1;
- else if (err == 10040) post("netsend~: %s: message too long (%d)", s, err);
- else if (err == 10053) post("netsend~: %s: software caused connection abort (%d)", s, err);
- else if (err == 10055) post("netsend~: %s: no buffer space available (%d)", s, err);
- else if (err == 10060) post("netsend~: %s: connection timed out (%d)", s, err);
- else if (err == 10061) post("netsend~: %s: connection refused (%d)", s, err);
+ else if (err == 10040) post("udpreceive~: %s: message too long (%d)", s, err);
+ else if (err == 10053) post("udpreceive~: %s: software caused connection abort (%d)", s, err);
+ else if (err == 10055) post("udpreceive~: %s: no buffer space available (%d)", s, err);
+ else if (err == 10060) post("udpreceive~: %s: connection timed out (%d)", s, err);
+ else if (err == 10061) post("udpreceive~: %s: connection refused (%d)", s, err);
else post("udpreceive~: %s: %s (%d)", s, strerror(err), err);
#else
int err = errno;
@@ -726,16 +731,16 @@ static int udpreceive_tilde_sockerror(char *s)
if (err == EAGAIN)
#endif
{
- return 1; /* recoverable error */
+ return 0; /* recoverable error */
}
- return 0; /* indicate non-recoverable error */
+ return err; /* indicate non-recoverable error */
}
static int udpreceive_tilde_setsocketoptions(int sockfd)
{
int sockopt = 1;
if (setsockopt(sockfd, SOL_IP, TCP_NODELAY, (const char*)&sockopt, sizeof(int)) < 0)
- post("setsockopt NODELAY failed");
+ post("udpreceive~: setsockopt NODELAY failed");
sockopt = 1;
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const char*)&sockopt, sizeof(int)) < 0)
diff --git a/net/udpsend~.c b/net/udpsend~.c
index e951e5d..6d6d0f1 100644
--- a/net/udpsend~.c
+++ b/net/udpsend~.c
@@ -394,7 +394,7 @@ static t_int *udpsend_tilde_perform(t_int *w)
int ret = send(x->x_fd, bp, length, SEND_FLAGS);
if (ret <= 0)
{
- post ("length %ld", length);
+ post ("udpsend~: sending length %ld", length);
udpsend_tilde_sockerror("send data");
pthread_mutex_unlock(&x->x_mutex);
udpsend_tilde_disconnect(x);
diff --git a/net/udpsend~.h b/net/udpsend~.h
index 59dbbd7..6ecfa6d 100644
--- a/net/udpsend~.h
+++ b/net/udpsend~.h
@@ -34,7 +34,7 @@
/* Some enhancements have been made with the goal of keeping compatibility */
/* between the stream formats of streamout~/in~ and netsend~/receive~. */
-#define VERSION "0.3"
+#define VERSION "0.31"
#define DEFAULT_AUDIO_CHANNELS 32 /* nax. number of audio channels we support */
#define DEFAULT_AUDIO_BUFFER_SIZE 2048 /*1024*/ /* number of samples in one audio block */