Skip to content

Commit 1865ab4

Browse files
author
Noam Camus
committed
Enable running more then one instance of server
If we can get port number 0 the bind() will find a free port. And we will set it to server. This way each session on same machine won't interfer with each other. Signed-off-by: Noam Camus <noamc@ezchip.com>
1 parent ec0090b commit 1865ab4

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/jsonrpc-c.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,8 @@ int jrpc_server_init_with_ev_loop(struct jrpc_server *server,
259259
static int __jrpc_server_start(struct jrpc_server *server) {
260260
int sockfd;
261261
struct addrinfo hints, *servinfo, *p;
262+
struct sockaddr_in sockaddr;
263+
int len;
262264
int yes = 1;
263265
int rv;
264266
char PORT[6];
@@ -293,6 +295,16 @@ static int __jrpc_server_start(struct jrpc_server *server) {
293295
continue;
294296
}
295297

298+
len = sizeof(sockaddr);
299+
if ( getsockname( sockfd, (struct sockaddr *)&sockaddr, &len )
300+
== -1 )
301+
{
302+
close(sockfd);
303+
perror("server: getsockname");
304+
continue;
305+
}
306+
server->port_number = ntohs( sockaddr.sin_port );
307+
296308
break;
297309
}
298310

0 commit comments

Comments
 (0)