]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
rpc : set SO_REUSEADDR for the server socket (#7320)
authorRadoslav Gerganov <redacted>
Fri, 17 May 2024 14:25:44 +0000 (17:25 +0300)
committerGitHub <redacted>
Fri, 17 May 2024 14:25:44 +0000 (17:25 +0300)
ref: #7293

examples/rpc/rpc-server.cpp
ggml-rpc.cpp

index 41f377376eb23dd0d9af4c1f9182893292a778e1..7c15d2aa4acfb0af4ee85a00fb28e4c41663a2e8 100644 (file)
@@ -56,6 +56,10 @@ static bool rpc_server_params_parse(int argc, char ** argv, rpc_server_params &
         } else if (arg == "-h" || arg == "--help") {
             print_usage(argc, argv, params);
             exit(0);
+        } else {
+            fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
+            print_usage(argc, argv, params);
+            exit(0);
         }
     }
     return true;
index ba392009ffed802607ef97a8f734ce6de1b7bdc0..4a9bfa52d87b124304613318b0f3e2562c512e4a 100644 (file)
@@ -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_t> socket_connect(const char * host, int port) {
@@ -181,7 +187,10 @@ static std::shared_ptr<socket_t> 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);