diff --git a/Posix-compatibility.md b/Posix-compatibility.md index 2c03300..26dfa2c 100644 --- a/Posix-compatibility.md +++ b/Posix-compatibility.md @@ -156,6 +156,7 @@ Legend: | ✅ | TCP_KEEPIDLE
TCP_KEEPALIVE on MacOS | [`tcp-socket::(set-)keep-alive-idle-time`][tcp] | linux, windows, macos, freebsd, jvm, .net, libuv, go, nginx, curl | | ✅ | TCP_KEEPINTVL | [`tcp-socket::(set-)keep-alive-interval`][tcp] | linux, windows, macos, freebsd, jvm, .net, libuv, go, nginx, curl | | ✅ | TCP_KEEPCNT | [`tcp-socket::(set-)keep-alive-count`][tcp] | linux, windows, macos, freebsd, jvm, .net, libuv, nginx | +| ✅ | SO_REUSEADDR for TCP | Enabled by default. See [`tcp-socket::bind`][tcp] | posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, openssl, nginx, curl, exim | | ⛔ | SO_ERROR | Not necessary. WIT has (or will have) native support for asynchronous results. | posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go, openssl, nginx, curl, msquic | | ⛔ | SO_TYPE | Can be inferred from the socket resource type. | posix, linux, windows, macos, freebsd, jvm, .net, go, openssl, nginx, curl, exim | | ⛔ | SO_PROTOCOL
SO_PROTOCOL_INFO on Windows | Can be inferred from the socket resource type. | linux, windows, freebsd, .net, exim | @@ -182,7 +183,7 @@ Legend: | ❔ | IPV6_MTU_DISCOVER | [#79][79] | linux, windows, openssl, nginx, curl, msquic | | ❔ | TCP_NODELAY | [#75][75] | posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go, openssl, nginx, curl, exim | | ❔ | TCP_CORK
TCP_NOPUSH on MacOS & FreeBSD | [#75][75] | linux, macos, freebsd, nginx, exim | -| ❔ | SO_REUSEADDR | [#74][74] | posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, openssl, nginx, curl, exim | +| ❔ | SO_REUSEADDR for UDP | [#74][74] | posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, openssl, nginx, curl, exim | | ❔ | SO_EXCLUSIVEADDRUSE | [#74][74] | windows | | ❔ | SO_RANDOMIZE_PORT | [#74][74] | windows | | ❔ | SO_RANDOMPORT | [#74][74] | macos | diff --git a/imports.md b/imports.md index 497f48d..cdbe6e6 100644 --- a/imports.md +++ b/imports.md @@ -1190,6 +1190,11 @@ implicitly bind the socket.

  • not-in-progress: A bind operation is not in progress.
  • would-block: Can't finish the operation, it is still in progress. (EWOULDBLOCK, EAGAIN)
  • +

    Implementors note

    +

    When binding to a non-zero port, this bind operation shouldn't be affected by the TIME_WAIT +state of a recently closed socket on the same local address. In practice this means that the SO_REUSEADDR +socket option should be set implicitly on all platforms, except on Windows where this is the default behavior +and SO_REUSEADDR performs something different entirely.

    References