Commit d6cf9961 by Ondřej Zajíček

IO: Fix socket priority

On Linux, setting the ToS will also set the priority and the range of
accepted values is quite limited (masked by 0x1e). Therefore, 0xc0 is
translated to a priority of 0, not something we want, overriding the
"7" priority which was set previously explicitely. To avoid that, just
move setting priority later in the code.

Thanks to Vincent Bernat for the patch.
parent 63472779
Pipeline #32215 passed with stages
in 9 minutes 10 seconds
......@@ -1238,10 +1238,6 @@ sk_setup(sock *s)
#endif
}
if (s->priority >= 0)
if (sk_set_priority(s, s->priority) < 0)
return -1;
if (sk_is_ipv4(s))
{
if (s->flags & SKF_LADDR_RX)
......@@ -1292,6 +1288,11 @@ sk_setup(sock *s)
return -1;
}
/* Must be after sk_set_tos4() as setting ToS on Linux also mangles priority */
if (s->priority >= 0)
if (sk_set_priority(s, s->priority) < 0)
return -1;
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment