From c108c9db969c4d4abaccc88419b4ac0c44957365 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 17 Apr 2017 16:05:22 +0200 Subject: SCTP: Don't enable sender_dry_event for SCTP, as it breaks Linux SCTP Enabling sender_dry_event in SCTP_FLAGS breaks reliable delivery of DATA chunks to the scoket user on Linux. Let's avoid enabling that, while still enabling various other interesting events. See https://bugzilla.redhat.com/show_bug.cgi?id=1442784 for all related details. Change-Id: Ib616cd07a6044ca2ee7e05093b22df3369c62b56 --- src/stream.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/stream.c') diff --git a/src/stream.c b/src/stream.c index ed73a62..add08b8 100644 --- a/src/stream.c +++ b/src/stream.c @@ -50,8 +50,17 @@ static int sctp_sock_activate_events(int fd) struct sctp_event_subscribe event; int rc; - /* subscribe for all events */ - memset((uint8_t *)&event, 1, sizeof(event)); + /* subscribe for all relevant events */ + memset((uint8_t *)&event, 0, sizeof(event)); + event.sctp_data_io_event = 1; + event.sctp_association_event = 1; + event.sctp_address_event = 1; + event.sctp_address_event = 1; + event.sctp_send_failure_event = 1; + event.sctp_peer_error_event = 1; + event.sctp_shutdown_event = 1; + /* IMPORTANT: Do NOT enable sender_dry_event here, see + * https://bugzilla.redhat.com/show_bug.cgi?id=1442784 */ rc = setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, &event, sizeof(event)); -- cgit v1.2.3