Quellcode durchsuchen

Ignore error when setting DSCP value

Setting DSCP is additional feature and failure to enable it should not
abort download entirely.  This change fixes the bug that windows build
does not perform bittorrent downloads.
Tatsuhiro Tsujikawa vor 11 Jahren
Ursprung
Commit
f0473dc34d
1 geänderte Dateien mit 14 neuen und 6 gelöschten Zeilen
  1. 14 6
      src/SocketCore.cc

+ 14 - 6
src/SocketCore.cc

@@ -535,15 +535,23 @@ void SocketCore::setTcpNodelay(bool f)
 
 void SocketCore::applyIpDscp()
 {
-  int family = getAddressFamily();
-  if(family == AF_INET) {
-    setSockOpt(IPPROTO_IP, IP_TOS, &ipDscp_, sizeof(ipDscp_));
+  if(ipDscp_ == 0) {
+    return;
   }
+
+  try {
+    int family = getAddressFamily();
+    if(family == AF_INET) {
+      setSockOpt(IPPROTO_IP, IP_TOS, &ipDscp_, sizeof(ipDscp_));
+    }
 #if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-  else if(family == AF_INET6) {
-    setSockOpt(IPPROTO_IPV6, IPV6_TCLASS, &ipDscp_, sizeof(ipDscp_));
-  }
+    else if(family == AF_INET6) {
+      setSockOpt(IPPROTO_IPV6, IPV6_TCLASS, &ipDscp_, sizeof(ipDscp_));
+    }
 #endif
+  } catch(RecoverableException& e) {
+    A2_LOG_INFO_EX("Applying DSCP value failed", e);
+  }
 }
 
 void SocketCore::setNonBlockingMode()