'UDP Socket sent_to fails with Os { code: 1, kind: PermissionDenied, message: "Operation not permitted" }

I am developing an application in Rust using UDP sockets. The problem I encounter is that sometimes, the send_to function fails with an error saying Os { code: 1, kind: PermissionDenied, message: "Operation not permitted" }

I create the UDP socket using -

let socket = UdpSocket::bind(("0.0.0.0", 0)).expect("unable to create socket")

Using 0 as port so its automatically assigned.

I found a similar issue shown here with C++ without any explanation of what the error means or how to resolve it. In another post here it is mentioned that the kernel drops some of the packets. The solution there alters the system configuration.

So, what does this error mean and what could be a solution to deal with this? Even in the docs for sent_to no such error is mentioned.

As mentioned in the C++ post it is very rare and is hard to debug.

EDIT:

The I am using send_to as

socket.send_to(&sequence_data, address).expect("Couldn't send sequence")

Here,

  • address is a SocketAddr with value 127.0.0.1:<port>. The port is decided at runtime.
  • sequence_data is a Vec<u8>
  • socket is a UdpSocket


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source