[SCTP][patch] socket does not wake up

From: Martin Kulas <coolaz_at_web.de>
Date: Wed, 3 Oct 2007 16:14:12 +0200
Hello!

I patched netcat to support 1to1-SCTP sockets.
Netcat uses the poll() system call to wait for new data
in the socket buffer.  The problem is that poll() does not
return when the kernel has closed the SCTP association.
Select() has the same problem.

I digged around in the SCTP sources and created a patched to remove 
that bug.   The patch is a one-liner:

<patch>
--- sctp_pcb.c.orig	2007-10-03 13:27:12.000000000 +0200
+++ sctp_pcb.c	2007-10-03 15:51:55.286987000 +0200
_at__at_ -4234,6 +4234,7 _at__at_
 					    SS_ISCONFIRMING |
 					    SS_ISCONNECTED);
 				}
+				socantrcvmore(so);
 				SOCK_UNLOCK(so);
 				sctp_sowwakeup(inp, so);
 				sctp_sorwakeup(inp, so);
</patch>

Now I have no problems with the system calls select()/poll() anymore.
Is this patch OK or have I missed anything?


Regards,
Martin

-- 
PGP Key: http://www.stud.uni-hamburg.de/~kulas/mkulas_pubkey.asc

Received on Wed Oct 03 2007 - 12:40:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:18 UTC