|
@@ -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()
|