From c5562bde48571ce4fa5a8edf8c1ae2e6f6a5ff6b Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 26 Jan 2011 11:02:42 +0100 Subject: sctp: Close the socket if we get <= 0 as a result for sctp_rcvmsg The manpage says that -1 is the indication for error but on 2.6.12 we just ended up in a infinite loop as select shows the socket as readable but a recvmsg does not give any data. --- src/sctp_m2ua.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sctp_m2ua.c') diff --git a/src/sctp_m2ua.c b/src/sctp_m2ua.c index 5d1db25..83784ec 100644 --- a/src/sctp_m2ua.c +++ b/src/sctp_m2ua.c @@ -429,7 +429,7 @@ static int m2ua_conn_read(struct bsc_fd *fd) memset(&addr, 0, sizeof(addr)); rc = sctp_recvmsg(fd->fd, msg->data, msg->data_len, (struct sockaddr *) &addr, &len, &info, NULL); - if (rc < 0) { + if (rc <= 0) { LOGP(DINP, LOGL_ERROR, "Failed to read.\n"); m2ua_conn_destroy(fd->data); return -1; -- cgit v1.2.3