diff --git a/src/socks.c b/src/socks.c index 3a26138..6e2b7d8 100644 --- a/src/socks.c +++ b/src/socks.c @@ -179,6 +179,20 @@ void * sockschild(struct clientparam* param) { #endif if ((param->remsock=so._socket(SASOCK(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);} param->operation = command == 2?BIND:UDPASSOC; +#ifdef REUSE + if (command == 2){ + int opt; + +#ifdef SO_REUSEADDR + opt = 1; + so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&opt, sizeof(int)); +#endif +#ifdef SO_REUSEPORT + opt = 1; + so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEPORT, (unsigned char *)&opt, sizeof(int)); +#endif + } +#endif break; default: