diff --git a/ChangeLog b/ChangeLog index c864f2f..c1572ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +* added enet_socket_get_option() and ENET_SOCKOPT_ERROR +* added enet_host_random_seed() platform stub + ENet 1.3.8 (June 2, 2013): * added enet_linked_version() for checking the linked version diff --git a/include/enet/enet.h b/include/enet/enet.h index c948be8..0298d84 100644 --- a/include/enet/enet.h +++ b/include/enet/enet.h @@ -60,7 +60,8 @@ typedef enum _ENetSocketOption ENET_SOCKOPT_SNDBUF = 4, ENET_SOCKOPT_REUSEADDR = 5, ENET_SOCKOPT_RCVTIMEO = 6, - ENET_SOCKOPT_SNDTIMEO = 7 + ENET_SOCKOPT_SNDTIMEO = 7, + ENET_SOCKOPT_ERROR = 8 } ENetSocketOption; typedef enum _ENetSocketShutdown @@ -491,6 +492,7 @@ ENET_API int enet_socket_send (ENetSocket, const ENetAddress *, const ENe ENET_API int enet_socket_receive (ENetSocket, ENetAddress *, ENetBuffer *, size_t); ENET_API int enet_socket_wait (ENetSocket, enet_uint32 *, enet_uint32); ENET_API int enet_socket_set_option (ENetSocket, ENetSocketOption, int); +ENET_API int enet_socket_get_option (ENetSocket, ENetSocketOption, int *); ENET_API int enet_socket_shutdown (ENetSocket, ENetSocketShutdown); ENET_API void enet_socket_destroy (ENetSocket); ENET_API int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSocketSet *, enet_uint32); diff --git a/unix.c b/unix.c index 56b09d3..cfd212e 100644 --- a/unix.c +++ b/unix.c @@ -271,6 +271,19 @@ enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value) return result == -1 ? -1 : 0; } +int +enet_socket_get_option (ENetSocket socket, ENetSocketOption option, int * value) +{ + int result = -1; + switch (option) + { + case ENET_SOCKOPT_ERROR: + result = setsockopt (socket, SOL_SOCKET, SO_ERROR, (char *) value, sizeof (int)); + break; + } + return result == -1 ? -1 : 0; +} + int enet_socket_connect (ENetSocket socket, const ENetAddress * address) { diff --git a/win32.c b/win32.c index 99b81aa..1950da9 100644 --- a/win32.c +++ b/win32.c @@ -201,6 +201,19 @@ enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value) return result == SOCKET_ERROR ? -1 : 0; } +int +enet_socket_get_option (ENetSocket socket, ENetSocketOption option, int * value) +{ + int result = SOCKET_ERROR; + switch (option) + { + case ENET_SOCKOPT_ERROR: + result = setsockopt (socket, SOL_SOCKET, SO_ERROR, (char *) value, sizeof (int)); + break; + } + return result == SOCKET_ERROR ? -1 : 0; +} + int enet_socket_connect (ENetSocket socket, const ENetAddress * address) {