Bladeren bron

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 11 jaren geleden
bovenliggende
commit
f0473dc34d
1 gewijzigde bestanden met toevoegingen van 14 en 6 verwijderingen
  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()