瀏覽代碼

Merge pull request #480 from industriousonesoft/master

Is it necessary to set a higher priority for DTLS handshake packet?
Paul-Louis Ageneau 4 年之前
父節點
當前提交
0c988968d2
共有 1 個文件被更改,包括 12 次插入3 次删除
  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));
 }
 }