8 char* unix_sock_file = NULL;
10 char* log_file = NULL;
11 char* listen_ip = NULL;
13 /* starts the logging and server processes */
17 /* shut down, clean up, and restart */
18 void sig_hup_handler( int a ) {
19 warning_handler(" +++ Re-launching server for SIGHUP");
23 unlink(unix_sock_file);
30 void sig_int_handler( int a ) {
31 warning_handler(" +++ Shutting down because of user signal");
34 unlink(unix_sock_file);
40 /* loads the command line settings and launches the server */
41 int main(int argc, char* argv[]) {
44 char* sport = argv[1];
46 unix_sock_file = argv[3];
47 char* slog_level = argv[4];
50 if(!sport || !unix_sock_file || !slog_level) {
52 "usage: %s <port> <listen_ip> <path_to_unix_sock_file> <log_level [1-4]"
53 "(4 is the highest)> [log_file (optional, goes to stderr otherwise)]\n"
54 "e.g: %s 5222 10.0.0.100 /tmp/server.sock 1 /tmp/server.log\n"
55 "if listen_ip is '*', then we will listen on all addresses",
61 log_level = atoi(slog_level);
64 warning_handler("invalid port (%d), falling back to 5222");
68 if(log_level < 1 || log_level > 4) {
69 warning_handler("log level (%d) is not recognized, falling back to WARN", log_level);
73 fprintf(stderr, "Launching with port %d, unix sock %s, log level %d, log file %s\n",
74 port, unix_sock_file, log_level, log_file );
76 if (daemonize() == -1) {
77 fprintf(stderr, "!!! Error forking the daemon! Going away now... :(\n");
81 signal(SIGHUP, &sig_hup_handler);
82 signal(SIGINT, &sig_int_handler);
83 signal(SIGTERM, &sig_int_handler);
89 void launch_server() {
91 log_init(log_level, log_file);
92 info_handler("Booting jserver-c on port %d and "
93 "sock file %s", port, unix_sock_file);
95 if(!strcmp(listen_ip,"*")) listen_ip = NULL;
98 unlink(unix_sock_file);
99 if(jserver_connect(js, port, listen_ip, unix_sock_file) < 0)
100 fatal_handler("Could not connect...");