diff options
| author | Soikk | 2025-11-04 00:11:32 +0100 |
|---|---|---|
| committer | Soikk | 2025-11-04 00:11:32 +0100 |
| commit | c2e397b6ee390d06f1af8921a514fdcf90e3f2fa (patch) | |
| tree | e5391f6f1f52be877b3fd84199b0cc4c79913f5b | |
| parent | 5f022ef24f6540cebc739a5d347ca007b0fc4b4c (diff) | |
| download | soikk-server-c2e397b6ee390d06f1af8921a514fdcf90e3f2fa.tar.xz soikk-server-c2e397b6ee390d06f1af8921a514fdcf90e3f2fa.tar.zst | |
Added socket file
| -rwxr-xr-x | src/main.c | 32 |
1 files changed, 29 insertions, 3 deletions
@@ -14,6 +14,8 @@ config_m config; struct { str path; + str sock_path; + str sock_addr; str ipc_addr; str workers; } dir; @@ -40,6 +42,24 @@ int create_server_dir(str name){ return 1; } } + dir.sock_path = dup_strs(dir.path, sstr("socket/")); + log_info("creating sock path in %.*s", dir.sock_path.len, dir.sock_path.ptr); + if(!dir_exists(dir.sock_path.ptr)){ + // TODO: else? how to reattach to socket? how to leave socket reattachable? + // TODO: look at ptrace(2) + if(mkdir(dir.sock_path.ptr, 0777) != 0){ + log_error("Error creating socket directory in '%.*s': %s", dir.sock_path.len, dir.sock_path.ptr, strerror(errno)); + return 1; + } + } + str sssocket = utostr(server->ssocket, 10); + dir.sock_addr = dup_strs(dir.sock_path, sssocket); + free_str(&sssocket); + log_info("creating sock in %.*s", dir.sock_addr.len, dir.sock_addr.ptr); + if(creat(dir.sock_addr.ptr, 0777) == -1){ + log_error("Error creating socket file for server in '%.*s': %s", dir.sock_addr.len, dir.sock_addr.ptr, strerror(errno)); + return 1; + } dir.ipc_addr = dup_strs(dir.path, sstr("ipcserver")); if(path_exists(dir.ipc_addr.ptr)){ if(remove(dir.ipc_addr.ptr) != 0){ @@ -65,15 +85,15 @@ int init(char *configfile){ } print_master_config(config); log_info("Succesfully read master config from '%s'", configfile); - if(create_server_dir(config.name) != 0){ - return 1; - } // decouple so the whole net.c doesnt get linked? server = setup_http_server(config.port, config.backlog); if(server == NULL){ log_error("Error setting up socket server"); return 1; } + if(create_server_dir(config.name) != 0){ + return 1; + } // configurable name? sender = setup_ipc_sender(dir.ipc_addr, IPC_BACKLOG); if(sender == NULL){ @@ -90,6 +110,12 @@ int init(char *configfile){ } void remove_server_dir(void){ + if(remove(dir.sock_addr.ptr) != 0){ + log_error("Error removing socket file in '%.*s': %s", dir.sock_addr.len, dir.sock_addr.ptr, strerror(errno)); + } + if(remove(dir.sock_path.ptr) != 0){ + log_error("Error removing socket path in '%.*s': %s", dir.sock_path.len, dir.sock_path.ptr, strerror(errno)); + } // remove workers entries first if(remove(dir.workers.ptr) != 0){ log_error("Error removing workers directory in '%.*s': %s", dir.workers.len, dir.workers.ptr, strerror(errno)); |
