From bb3089895c3638dd7668843099bf43d8999f0878 Mon Sep 17 00:00:00 2001 From: Tarik02 Date: Fri, 26 Apr 2019 22:23:52 +0300 Subject: [PATCH 1/2] Implement function enet_socket_set_option using ENetSocket class's methods. Implemented options: - ENET_SOCKOPT_NONBLOCK - ENET_SOCKOPT_BROADCAST - ENET_SOCKOPT_REUSEADDR - ENET_SOCKOPT_NODELAY Not implemented options: - ENET_SOCKOPT_RCVBUF - ENET_SOCKOPT_SNDBUF - ENET_SOCKOPT_RCVTIMEO - ENET_SOCKOPT_SNDTIMEO --- thirdparty/enet/godot.cpp | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/thirdparty/enet/godot.cpp b/thirdparty/enet/godot.cpp index 2e1519b7b2f..894061a20f9 100644 --- a/thirdparty/enet/godot.cpp +++ b/thirdparty/enet/godot.cpp @@ -216,6 +216,46 @@ int enet_socket_listen(ENetSocket socket, int backlog) { int enet_socket_set_option(ENetSocket socket, ENetSocketOption option, int value) { + NetSocket *sock = (NetSocket *)socket; + + switch (option) { + case ENET_SOCKOPT_NONBLOCK: { + sock->set_blocking_enabled(value ? false : true); + return 0; + } break; + + case ENET_SOCKOPT_BROADCAST: { + sock->set_broadcasting_enabled(value ? true : false); + return 0; + } break; + + case ENET_SOCKOPT_REUSEADDR: { + sock->set_reuse_address_enabled(value ? true : false); + return 0; + } break; + + case ENET_SOCKOPT_RCVBUF: { + return -1; + } break; + + case ENET_SOCKOPT_SNDBUF: { + return -1; + } break; + + case ENET_SOCKOPT_RCVTIMEO: { + return -1; + } break; + + case ENET_SOCKOPT_SNDTIMEO: { + return -1; + } break; + + case ENET_SOCKOPT_NODELAY: { + sock->set_tcp_no_delay_enabled(value ? true : false); + return 0; + } break; + } + return -1; } From 63d1a80656fbbacb7f055866fda7d2892721510f Mon Sep 17 00:00:00 2001 From: Tarik02 Date: Fri, 26 Apr 2019 22:27:50 +0300 Subject: [PATCH 2/2] Removed a call to `set_blocking_enabled` from function `enet_socket_create` since it is already called from https://github.com/godotengine/godot/blob/master/thirdparty/enet/host.c#L63 --- thirdparty/enet/godot.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/thirdparty/enet/godot.cpp b/thirdparty/enet/godot.cpp index 894061a20f9..822a2947817 100644 --- a/thirdparty/enet/godot.cpp +++ b/thirdparty/enet/godot.cpp @@ -95,7 +95,6 @@ ENetSocket enet_socket_create(ENetSocketType type) { NetSocket *socket = NetSocket::create(); IP::Type ip_type = IP::TYPE_ANY; socket->open(NetSocket::TYPE_UDP, ip_type); - socket->set_blocking_enabled(false); return socket; }