Error 10013 (WSAEACCES) is returned when a second bind to an excluded port fails in Windows
This article provides help to solve an issue where you can't bind an excluded port again even though the SO_REUSEADDR option is set.
Applies to: Windows Server 2012 R2
Original KB number: 3039044
Symptoms
Assume that you exclude a port by running the following command on a computer that is running Windows Server 2012 R2, Windows Server 2012, or Windows Server 2008 R2:
netsh int ipv4 add excludedportrange protocol = tcp startport = Integer numberofports = 1
Additionally, assume that you bind the SO_REUSEADDR socket to a specific TCP port on the computer. In this situation, when you try to bind the SO_REUSEADDR socket to the TCP port again, the bind fails, and you receive the "WSAEACCES (10013)" error.
Therefore, if you use an application that calls the two binds in Windows Server 2012 R2, Windows Server 2012, or Windows Server 2008 R2, it cannot work correctly.
Note
- By default, Windows Server 2008 R2 cannot use the
netsh
command to exclude ports. However, after you apply hotfix 2665809, the operating system supports this function. - This issue does not occur in Windows Server 2008 or Windows Server 2003.
Cause
This issue occurs because of a problem in the tcpip.sys driver. Specifically, the REUSE flag was overwritten by the RESERVED flag when the tcpip.sys driver binds an excluded port.
Workaround
To work around this issue, use one of the following methods:
- Use a port that is not included in the default dynamic port range (from 49,152 to 65,535), and do not specify the port as an excluded port by running the
netsh
command. - Use the CreatePersistentTcpPortReservation and LookupPersistentTcpPortReservation functions to reserve a port.
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
More information
See the setsockopt function to know more about the SO_REUSEADDR option.
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for