]> granicus.if.org Git - libevent/commitdiff
Check existence of IPV6_V6ONLY in evutil_make_listen_socket_ipv6only() (mingw32)
authorAzat Khuzhin <a3at.mail@gmail.com>
Sun, 28 Oct 2018 15:11:22 +0000 (18:11 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Sun, 28 Oct 2018 15:39:20 +0000 (18:39 +0300)
MinGW 32-bit 5.3.0 does not defines it and our appveyour [1] build
reports this instantly:
    evutil.c: In function 'evutil_make_listen_socket_ipv6only':
    evutil.c:392:40: error: 'IPV6_V6ONLY' undeclared (first use in this function)
      return setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (void*) &one,

  [1]: https://www.appveyor.com/docs/windows-images-software/#mingw-msys-cygwin

Another solution will be to use mingw64 which has it, but I guess we do
want that #ifdef anyway.

evutil.c
include/event2/util.h

index 5d385bdc75d30b86e5d5e867cc39ffebbb05c039..402ab0d82e0862439f7e9edc15e573cd0d6d6c88 100644 (file)
--- a/evutil.c
+++ b/evutil.c
@@ -388,9 +388,12 @@ evutil_make_listen_socket_reuseable_port(evutil_socket_t sock)
 int
 evutil_make_listen_socket_ipv6only(evutil_socket_t sock)
 {
+#if defined(IPV6_V6ONLY)
        int one = 1;
        return setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (void*) &one,
            (ev_socklen_t)sizeof(one));
+#endif
+       return 0;
 }
 
 int
index c0f5f80bef6cc5e2007374639537d79b3d0fa312..80574c71e36d8db890340c49a1ce36923d02f71d 100644 (file)
@@ -451,7 +451,8 @@ int evutil_make_socket_closeonexec(evutil_socket_t sock);
     socket() or accept().
 
     @param sock The socket to be closed
-    @return 0 on success, -1 on failure
+    @return 0 on success (whether the operation is supported or not),
+            -1 on failure
  */
 EVENT2_EXPORT_SYMBOL
 int evutil_closesocket(evutil_socket_t sock);