From: Radoslav Gerganov Date: Fri, 17 May 2024 14:25:44 +0000 (+0300) Subject: rpc : set SO_REUSEADDR for the server socket (llama/7320) X-Git-Tag: upstream/0.0.1642~679 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=930690634abf61f8187de0c9d2bcd9f6eeb3e1c8;p=pkg%2Fggml%2Fsources%2Fggml rpc : set SO_REUSEADDR for the server socket (llama/7320) ref: #7293 --- diff --git a/src/ggml-rpc.cpp b/src/ggml-rpc.cpp index ba392009..4a9bfa52 100644 --- a/src/ggml-rpc.cpp +++ b/src/ggml-rpc.cpp @@ -134,7 +134,13 @@ static bool set_no_delay(sockfd_t sockfd) { int flag = 1; // set TCP_NODELAY to disable Nagle's algorithm int ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)); - return ret >= 0; + return ret == 0; +} + +static bool set_reuse_addr(sockfd_t sockfd) { + int flag = 1; + int ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof(int)); + return ret == 0; } static std::shared_ptr socket_connect(const char * host, int port) { @@ -181,7 +187,10 @@ static std::shared_ptr create_server_socket(const char * host, int por if (sock == nullptr) { return nullptr; } - + if (!set_reuse_addr(sockfd)) { + fprintf(stderr, "Failed to set SO_REUSEADDR\n"); + return nullptr; + } struct sockaddr_in serv_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(host);