From 9fcff91d1f6e596b4ac02df30eab08af88993e3a Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 16 Aug 2005 15:16:26 +0000 Subject: [PATCH] jserver now has ability to listen on a specified IP address git-svn-id: svn://svn.open-ils.org/ILS/trunk@1663 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- OpenSRF/src/jserver/jserver-c.c | 4 ++-- OpenSRF/src/jserver/jserver-c.h | 4 +++- OpenSRF/src/jserver/jserver-c_main.c | 17 +++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/OpenSRF/src/jserver/jserver-c.c b/OpenSRF/src/jserver/jserver-c.c index 2b8394144a..d7e923e106 100644 --- a/OpenSRF/src/jserver/jserver-c.c +++ b/OpenSRF/src/jserver/jserver-c.c @@ -42,12 +42,12 @@ void jserver_socket_closed(void* blob, int sock_id) { } /* opens the inet and unix sockets that we're listening on */ -int jserver_connect(jserver* js, int port, char* unix_path) { +int jserver_connect(jserver* js, int port, char* listen_ip, char* unix_path) { if(js == NULL || js->mgr == NULL) return -1; int status = 0; if(port > 0) { - status = socket_open_tcp_server(js->mgr, port); + status = socket_open_tcp_server(js->mgr, port, listen_ip); if(status == -1) return status; } diff --git a/OpenSRF/src/jserver/jserver-c.h b/OpenSRF/src/jserver/jserver-c.h index 67e5695e3a..36026ec40a 100644 --- a/OpenSRF/src/jserver/jserver-c.h +++ b/OpenSRF/src/jserver/jserver-c.h @@ -29,10 +29,12 @@ void jserver_socket_closed(void* blob, int sock_id); void jserver_free(); /* opens the inet and unix sockets that we're listening on + listen_ip is the IP address the server should listen on. + if listen_ip is NULL, jserver will bind to all local IP's. if(port < 1) no inet socket is opened if unix_path == NULL no unix socket is opened returns -1 on error */ -int jserver_connect(jserver* js, int port, char* unix_path); +int jserver_connect(jserver* js, int port, char* listen_ip, char* unix_path); /* allocates a new client node */ jclient_node* _new_jclient_node(int id); diff --git a/OpenSRF/src/jserver/jserver-c_main.c b/OpenSRF/src/jserver/jserver-c_main.c index 9c6fe2a232..b9a6289505 100644 --- a/OpenSRF/src/jserver/jserver-c_main.c +++ b/OpenSRF/src/jserver/jserver-c_main.c @@ -8,6 +8,7 @@ int port = -1; char* unix_sock_file = NULL; int log_level = -1; char* log_file = NULL; +char* listen_ip = NULL; /* starts the logging and server processes */ void launch_server(); @@ -41,15 +42,17 @@ int main(int argc, char* argv[]) { char* prog = argv[0]; char* sport = argv[1]; - unix_sock_file = argv[2]; - char* slog_level = argv[3]; - log_file = argv[4]; + listen_ip = argv[2]; + unix_sock_file = argv[3]; + char* slog_level = argv[4]; + log_file = argv[5]; if(!sport || !unix_sock_file || !slog_level) { fprintf(stderr, - "usage: %s [log_file (optional, goes to stderr otherwise)]\n" - "e.g: %s 5222 /tmp/server.sock 1 /tmp/server.log\n", + "e.g: %s 5222 10.0.0.100 /tmp/server.sock 1 /tmp/server.log\n" + "if listen_ip is '*', then we will listen on all addresses", prog, prog); return 99; } @@ -89,9 +92,11 @@ void launch_server() { info_handler("Booting jserver-c on port %d and " "sock file %s", port, unix_sock_file); + if(!strcmp(listen_ip,"*")) listen_ip = NULL; + js = jserver_init(); unlink(unix_sock_file); - if(jserver_connect(js, port, unix_sock_file) < 0) + if(jserver_connect(js, port, listen_ip, unix_sock_file) < 0) fatal_handler("Could not connect..."); jserver_wait(js); -- 2.43.2