Spaces:
Running
Running
rpc : set SO_REUSEADDR for the server socket (llama/7320)
Browse files- ggml-rpc.cpp +11 -2
ggml-rpc.cpp
CHANGED
|
@@ -134,7 +134,13 @@ static bool set_no_delay(sockfd_t sockfd) {
|
|
| 134 |
int flag = 1;
|
| 135 |
// set TCP_NODELAY to disable Nagle's algorithm
|
| 136 |
int ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int));
|
| 137 |
-
return ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
}
|
| 139 |
|
| 140 |
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
|
|
| 181 |
if (sock == nullptr) {
|
| 182 |
return nullptr;
|
| 183 |
}
|
| 184 |
-
|
|
|
|
|
|
|
|
|
|
| 185 |
struct sockaddr_in serv_addr;
|
| 186 |
serv_addr.sin_family = AF_INET;
|
| 187 |
serv_addr.sin_addr.s_addr = inet_addr(host);
|
|
|
|
| 134 |
int flag = 1;
|
| 135 |
// set TCP_NODELAY to disable Nagle's algorithm
|
| 136 |
int ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int));
|
| 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;
|
| 144 |
}
|
| 145 |
|
| 146 |
static std::shared_ptr<socket_t> socket_connect(const char * host, int port) {
|
|
|
|
| 187 |
if (sock == nullptr) {
|
| 188 |
return nullptr;
|
| 189 |
}
|
| 190 |
+
if (!set_reuse_addr(sockfd)) {
|
| 191 |
+
fprintf(stderr, "Failed to set SO_REUSEADDR\n");
|
| 192 |
+
return nullptr;
|
| 193 |
+
}
|
| 194 |
struct sockaddr_in serv_addr;
|
| 195 |
serv_addr.sin_family = AF_INET;
|
| 196 |
serv_addr.sin_addr.s_addr = inet_addr(host);
|