Bug 1306714: Use RFC 7983 detection for DTLS packets. r=ekr draft
authorNils Ohlmeier [:drno] <drno@ohlmeier.org>
Fri, 30 Sep 2016 00:00:54 -0700
changeset 419728 fe5004477d52e389f629151698dffda54cf4e501
parent 419033 9baec74b3db1bf005c66ae2f50bafbdb02c3be38
child 532638 92b5faa317fa8d8464c72d740731e309d82ee5bc
push id31000
push userdrno@ohlmeier.org
push dateFri, 30 Sep 2016 19:53:59 +0000
reviewersekr
bugs1306714
milestone52.0a1
Bug 1306714: Use RFC 7983 detection for DTLS packets. r=ekr MozReview-Commit-ID: L1BYAFmJOug
media/mtransport/transportlayerdtls.cpp
--- a/media/mtransport/transportlayerdtls.cpp
+++ b/media/mtransport/transportlayerdtls.cpp
@@ -969,28 +969,32 @@ void TransportLayerDtls::PacketReceived(
   MOZ_MTLOG(ML_DEBUG, LAYER_INFO << "PacketReceived(" << len << ")");
 
   if (state_ != TS_CONNECTING && state_ != TS_OPEN) {
     MOZ_MTLOG(ML_DEBUG,
               LAYER_INFO << "Discarding packet in inappropriate state");
     return;
   }
 
+  // not DTLS per RFC 7983
+  if (data[0] < 20 || data[0] > 63) {
+    return;
+  }
+
   nspr_io_adapter_->PacketReceived(data, len);
 
   // If we're still connecting, try to handshake
   if (state_ == TS_CONNECTING) {
     Handshake();
   }
 
   // Now try a recv if we're open, since there might be data left
   if (state_ == TS_OPEN) {
     // nICEr uses a 9216 bytes buffer to allow support for jumbo frames
     unsigned char buf[9216];
-
     int32_t rv;
     // One packet might contain several DTLS packets
     do {
       rv = PR_Recv(ssl_fd_, buf, sizeof(buf), 0, PR_INTERVAL_NO_WAIT);
       if (rv > 0) {
         // We have data
         MOZ_MTLOG(ML_DEBUG, LAYER_INFO << "Read " << rv << " bytes from NSS");
         SignalPacketReceived(this, buf, rv);