Browse Source

Merge pull request #480 from industriousonesoft/master

Is it necessary to set a higher priority for DTLS handshake packet?
Paul-Louis Ageneau 3 years ago
parent
commit
0c988968d2
1 changed files with 12 additions and 3 deletions
  1. 12 3
      src/impl/dtlstransport.cpp

+ 12 - 3
src/impl/dtlstransport.cpp

@@ -491,9 +491,18 @@ void DtlsTransport::incoming(message_ptr message) {
 }
 }
 
 
 bool DtlsTransport::outgoing(message_ptr message) {
 bool DtlsTransport::outgoing(message_ptr message) {
-	if (message->dscp == 0)
-		message->dscp = mCurrentDscp;
-
+	if (message->dscp == 0) {
+		// DTLS handshake packet
+		if (state() != DtlsTransport::State::Connected) {
+			// Set recommended high-priority DSCP value
+			// See https://datatracker.ietf.org/doc/html/rfc8837#section-5
+			message->dscp = 18; // AF21(18), Assured Forwarding class 2, low drop probability
+		// User packet
+		}else {
+			message->dscp = mCurrentDscp;
+		}
+		
+	}
 	return Transport::outgoing(std::move(message));
 	return Transport::outgoing(std::move(message));
 }
 }