]> jfr.im git - solanum.git/blobdiff - ircd/wsproc.c
Support more human friendly k/d/x-line duration format
[solanum.git] / ircd / wsproc.c
index b11b0f3d01c84f54fc72c81b113d9bd157a49d00..612a334a189c644fe0c272f51e5b81f2291ec1bd 100644 (file)
@@ -194,7 +194,7 @@ ws_dead(ws_ctl_t * ctl)
        {
                wsockd_count--;
                ilog(L_MAIN, "wsockd helper died - attempting to restart");
-               sendto_realops_snomask(SNO_GENERAL, L_ALL, "wsockd helper died - attempting to restart");
+               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "wsockd helper died - attempting to restart");
                start_wsockd(1);
        }
 }
@@ -223,7 +223,7 @@ restart_wsockd_event(void *unused)
        {
                int start = ServerInfo.wsockd_count - get_wsockd_count();
                ilog(L_MAIN, "Attempting to restart wsockd processes");
-               sendto_realops_snomask(SNO_GENERAL, L_ALL, "Attempting to restart wsockd processes");
+               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Attempting to restart wsockd processes");
                start_wsockd(start);
        }
 }
@@ -233,12 +233,6 @@ start_wsockd(int count)
 {
        rb_fde_t *F1, *F2;
        rb_fde_t *P1, *P2;
-#ifdef _WIN32
-       const char *suffix = ".exe";
-#else
-       const char *suffix = "";
-#endif
-
        char fullpath[PATH_MAX + 1];
        char fdarg[6];
        const char *parv[2];
@@ -253,7 +247,7 @@ start_wsockd(int count)
        if(wsockd_spin_count > 20 && (rb_current_time() - last_spin < 5))
        {
                ilog(L_MAIN, "wsockd helper is spinning - will attempt to restart in 1 minute");
-               sendto_realops_snomask(SNO_GENERAL, L_ALL,
+               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                       "wsockd helper is spinning - will attempt to restart in 1 minute");
                rb_event_add("restart_wsockd_event", restart_wsockd_event, NULL, 60);
                wsockd_wait = 1;
@@ -265,17 +259,16 @@ start_wsockd(int count)
 
        if(wsockd_path == NULL)
        {
-               snprintf(fullpath, sizeof(fullpath), "%s%cwsockd%s", ircd_paths[IRCD_PATH_LIBEXEC], RB_PATH_SEPARATOR, suffix);
+               snprintf(fullpath, sizeof(fullpath), "%s/wsockd", ircd_paths[IRCD_PATH_LIBEXEC]);
 
                if(access(fullpath, X_OK) == -1)
                {
-                       snprintf(fullpath, sizeof(fullpath), "%s%cbin%cwsockd%s",
-                                   ConfigFileEntry.dpath, RB_PATH_SEPARATOR, RB_PATH_SEPARATOR, suffix);
+                       snprintf(fullpath, sizeof(fullpath), "%s/bin/wsockd", ConfigFileEntry.dpath);
                        if(access(fullpath, X_OK) == -1)
                        {
                                ilog(L_MAIN,
-                                    "Unable to execute wsockd%s in %s or %s/bin",
-                                    suffix, ircd_paths[IRCD_PATH_LIBEXEC], ConfigFileEntry.dpath);
+                                    "Unable to execute wsockd in %s or %s/bin",
+                                    ircd_paths[IRCD_PATH_LIBEXEC], ConfigFileEntry.dpath);
                                return 0;
                        }
                }
@@ -308,10 +301,8 @@ start_wsockd(int count)
                snprintf(s_pid, sizeof(s_pid), "%d", (int)getpid());
                rb_setenv("CTL_PPID", s_pid, 1);
 
-#ifdef _WIN32
-               SetHandleInformation((HANDLE) rb_get_fd(F2), HANDLE_FLAG_INHERIT, 1);
-               SetHandleInformation((HANDLE) rb_get_fd(P1), HANDLE_FLAG_INHERIT, 1);
-#endif
+               rb_clear_cloexec(F2);
+               rb_clear_cloexec(P1);
 
                pid = rb_spawn_process(wsockd_path, (const char **) parv);
                if(pid == -1)
@@ -380,7 +371,7 @@ ws_process_cmd_recv(ws_ctl_t * ctl)
                        break;
                default:
                        ilog(L_MAIN, "Received invalid command from wsockd: %s", ctl_buf->buf);
-                       sendto_realops_snomask(SNO_GENERAL, L_ALL, "Received invalid command from wsockd");
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Received invalid command from wsockd");
                        break;
                }
                rb_dlinkDelete(ptr, &ctl->readq);