Skip to content

Commit f4bd8b3

Browse files
authored
rpc : set SO_REUSEADDR for the server socket (#7320)
ref: #7293
1 parent 51e9d02 commit f4bd8b3

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

examples/rpc/rpc-server.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ static bool rpc_server_params_parse(int argc, char ** argv, rpc_server_params &
5656
} else if (arg == "-h" || arg == "--help") {
5757
print_usage(argc, argv, params);
5858
exit(0);
59+
} else {
60+
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
61+
print_usage(argc, argv, params);
62+
exit(0);
5963
}
6064
}
6165
return true;

ggml-rpc.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,13 @@ static bool set_no_delay(sockfd_t sockfd) {
134134
int flag = 1;
135135
// set TCP_NODELAY to disable Nagle's algorithm
136136
int ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int));
137-
return ret >= 0;
137+
return ret == 0;
138+
}
139+
140+
static bool set_reuse_addr(sockfd_t sockfd) {
141+
int flag = 1;
142+
int ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof(int));
143+
return ret == 0;
138144
}
139145

140146
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
181187
if (sock == nullptr) {
182188
return nullptr;
183189
}
184-
190+
if (!set_reuse_addr(sockfd)) {
191+
fprintf(stderr, "Failed to set SO_REUSEADDR\n");
192+
return nullptr;
193+
}
185194
struct sockaddr_in serv_addr;
186195
serv_addr.sin_family = AF_INET;
187196
serv_addr.sin_addr.s_addr = inet_addr(host);

0 commit comments

Comments
 (0)