diff --git a/src/SocketCore.cc b/src/SocketCore.cc index f560d939..df761463 100644 --- a/src/SocketCore.cc +++ b/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()