summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/rpc/rpc-server.cpp4
-rw-r--r--ggml-rpc.cpp13
2 files changed, 15 insertions, 2 deletions
diff --git a/examples/rpc/rpc-server.cpp b/examples/rpc/rpc-server.cpp
index 41f37737..7c15d2aa 100644
--- a/examples/rpc/rpc-server.cpp
+++ b/examples/rpc/rpc-server.cpp
@@ -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;
diff --git a/ggml-rpc.cpp b/ggml-rpc.cpp
index ba392009..4a9bfa52 100644
--- a/ggml-rpc.cpp
+++ b/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_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);