From 624a504f5ba0c2ca2a9a138e6d3ed1c1937b8df4 Mon Sep 17 00:00:00 2001 From: "buildbot@webrtc.org" Date: Tue, 5 Aug 2014 22:13:05 +0000 Subject: [PATCH] (Auto)update libjingle 72659510-> 72673987 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6829 4adac7df-926f-26a2-2b94-8c16560cd09d --- talk/media/sctp/sctpdataengine.cc | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/talk/media/sctp/sctpdataengine.cc b/talk/media/sctp/sctpdataengine.cc index eff18a88fa..8b74680fe8 100644 --- a/talk/media/sctp/sctpdataengine.cc +++ b/talk/media/sctp/sctpdataengine.cc @@ -105,9 +105,9 @@ namespace cricket { typedef rtc::ScopedMessageData InboundPacketMessage; typedef rtc::ScopedMessageData OutboundPacketMessage; -// TODO(ldixon): Find where this is defined, and also check is Sctp really -// respects this. -static const size_t kSctpMtu = 1280; +// The biggest SCTP packet. Starting from a 'safe' wire MTU value of 1280, +// take off 80 bytes for DTLS/TURN/TCP/IP overhead. +static const size_t kSctpMtu = 1200; enum { MSG_SCTPINBOUNDPACKET = 1, // MessageData is SctpInboundPacket @@ -378,6 +378,18 @@ bool SctpDataMediaChannel::OpenSctpSocket() { return false; } + // Disable MTU discovery + struct sctp_paddrparams params; + params.spp_assoc_id = 0; + params.spp_flags = SPP_PMTUD_DISABLE; + params.spp_pathmtu = kSctpMtu; + if (usrsctp_setsockopt(sock_, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, ¶ms, + sizeof(params))) { + LOG_ERRNO(LS_ERROR) << debug_name_ + << "Failed to set SCTP_PEER_ADDR_PARAMS."; + return false; + } + // Subscribe to SCTP event notifications. int event_types[] = {SCTP_ASSOC_CHANGE, SCTP_PEER_ADDR_CHANGE,