Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: webrtc/media/sctp/sctptransport.cc

Issue 2743653005: Fixed invalid filtering of SCTP datachannel packets on high ports. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | webrtc/media/sctp/sctptransport_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 19 matching lines...) Expand all
30 #include "webrtc/base/arraysize.h" 30 #include "webrtc/base/arraysize.h"
31 #include "webrtc/base/copyonwritebuffer.h" 31 #include "webrtc/base/copyonwritebuffer.h"
32 #include "webrtc/base/criticalsection.h" 32 #include "webrtc/base/criticalsection.h"
33 #include "webrtc/base/helpers.h" 33 #include "webrtc/base/helpers.h"
34 #include "webrtc/base/logging.h" 34 #include "webrtc/base/logging.h"
35 #include "webrtc/base/safe_conversions.h" 35 #include "webrtc/base/safe_conversions.h"
36 #include "webrtc/base/thread_checker.h" 36 #include "webrtc/base/thread_checker.h"
37 #include "webrtc/base/trace_event.h" 37 #include "webrtc/base/trace_event.h"
38 #include "webrtc/media/base/codec.h" 38 #include "webrtc/media/base/codec.h"
39 #include "webrtc/media/base/mediaconstants.h" 39 #include "webrtc/media/base/mediaconstants.h"
40 #include "webrtc/media/base/rtputils.h" // For IsRtpPacket
41 #include "webrtc/media/base/streamparams.h" 40 #include "webrtc/media/base/streamparams.h"
42 #include "webrtc/p2p/base/dtlstransportinternal.h" // For PF_NORMAL 41 #include "webrtc/p2p/base/dtlstransportinternal.h" // For PF_NORMAL
43 42
44 namespace { 43 namespace {
45 44
46 // The biggest SCTP packet. Starting from a 'safe' wire MTU value of 1280, 45 // The biggest SCTP packet. Starting from a 'safe' wire MTU value of 1280,
47 // take off 80 bytes for DTLS/TURN/TCP/IP overhead. 46 // take off 80 bytes for DTLS/TURN/TCP/IP overhead.
48 static constexpr size_t kSctpMtu = 1200; 47 static constexpr size_t kSctpMtu = 1200;
49 48
50 // The size of the SCTP association send buffer. 256kB, the usrsctp default. 49 // The size of the SCTP association send buffer. 256kB, the usrsctp default.
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 // Called by network interface when a packet has been received. 820 // Called by network interface when a packet has been received.
822 void SctpTransport::OnPacketRead(rtc::PacketTransportInternal* transport, 821 void SctpTransport::OnPacketRead(rtc::PacketTransportInternal* transport,
823 const char* data, 822 const char* data,
824 size_t len, 823 size_t len,
825 const rtc::PacketTime& packet_time, 824 const rtc::PacketTime& packet_time,
826 int flags) { 825 int flags) {
827 RTC_DCHECK_RUN_ON(network_thread_); 826 RTC_DCHECK_RUN_ON(network_thread_);
828 RTC_DCHECK_EQ(transport_channel_, transport); 827 RTC_DCHECK_EQ(transport_channel_, transport);
829 TRACE_EVENT0("webrtc", "SctpTransport::OnPacketRead"); 828 TRACE_EVENT0("webrtc", "SctpTransport::OnPacketRead");
830 829
831 // TODO(pthatcher): Do this in a more robust way by checking for 830 if (flags & PF_SRTP_BYPASS) {
832 // SCTP or DTLS. 831 // We are only interested in SCTP packets.
833 if (IsRtpPacket(data, len)) {
834 return; 832 return;
835 } 833 }
836 834
837 LOG(LS_VERBOSE) << debug_name_ << "->OnPacketRead(...): " 835 LOG(LS_VERBOSE) << debug_name_ << "->OnPacketRead(...): "
838 << " length=" << len << ", started: " << started_; 836 << " length=" << len << ", started: " << started_;
839 // Only give receiving packets to usrsctp after if connected. This enables two 837 // Only give receiving packets to usrsctp after if connected. This enables two
840 // peers to each make a connect call, but for them not to receive an INIT 838 // peers to each make a connect call, but for them not to receive an INIT
841 // packet before they have called connect; least the last receiver of the INIT 839 // packet before they have called connect; least the last receiver of the INIT
842 // packet will have called connect, and a connection will be established. 840 // packet will have called connect, and a connection will be established.
843 if (sock_) { 841 if (sock_) {
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 } 1080 }
1083 } 1081 }
1084 } 1082 }
1085 1083
1086 // Always try to send the queued RESET because this call indicates that the 1084 // Always try to send the queued RESET because this call indicates that the
1087 // last local RESET or remote RESET has made some progress. 1085 // last local RESET or remote RESET has made some progress.
1088 SendQueuedStreamResets(); 1086 SendQueuedStreamResets();
1089 } 1087 }
1090 1088
1091 } // namespace cricket 1089 } // namespace cricket
OLDNEW
« no previous file with comments | « no previous file | webrtc/media/sctp/sctptransport_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698