diff options
| author | Franklin Wei <git@fwei.tk> | 2016-01-02 18:40:29 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-01-02 18:40:29 -0500 |
| commit | 2819d11ceeb1ac739ed5f17ccb0abab63f494299 (patch) | |
| tree | 9041b1aa1212df0208f8f49b78101933ce7d4a3a /src/server.c | |
| parent | 66cdb3d4f427a1978dad56a66c1bf1085939601c (diff) | |
| download | netcosm-2819d11ceeb1ac739ed5f17ccb0abab63f494299.zip netcosm-2819d11ceeb1ac739ed5f17ccb0abab63f494299.tar.gz netcosm-2819d11ceeb1ac739ed5f17ccb0abab63f494299.tar.bz2 netcosm-2819d11ceeb1ac739ed5f17ccb0abab63f494299.tar.xz | |
preliminary refactor of user data management
Diffstat (limited to 'src/server.c')
| -rw-r--r-- | src/server.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/server.c b/src/server.c index da26279..e24c9f7 100644 --- a/src/server.c +++ b/src/server.c @@ -309,12 +309,6 @@ static void reqmap_init(void) hash_insert(request_map, &requests[i].code, requests + i); } -static void empty_pipe(int fd) -{ - char buf[4096]; - read(fd, buf, sizeof(buf)); -} - /** * Here's how child-parent requests work * 1. Child writes its PID and length of request to the parent's pipe, followed @@ -471,7 +465,6 @@ finish: return true; fail: - empty_pipe(in_fd); return true; } @@ -519,10 +512,12 @@ void init_signals(void) if(sigaction(SIGPIPE, &sa, NULL) < 0) error("sigaction"); - /* set this now so there's no race condition later */ + void sig_rt_0_handler(int s, siginfo_t *info, void *v); + + /* we set this now so there's no race condition after a fork() */ sigemptyset(&sa.sa_mask); sigaddset(&sa.sa_mask, SIGRTMIN); - void sig_rt_0_handler(int s, siginfo_t *info, void *v); + sigaddset(&sa.sa_mask, SIGPIPE); sa.sa_sigaction = sig_rt_0_handler; sa.sa_flags = SA_RESTART | SA_SIGINFO; if(sigaction(SIGRTMIN, &sa, NULL) < 0) @@ -540,7 +535,7 @@ static void check_userfile(void) static void load_worldfile(void) { - if(access(WORLDFILE, F_OK) < 0) + if(access(WORLDFILE, F_OK) < 0 || userdb_size() == 0) { world_init(netcosm_world, netcosm_world_sz, netcosm_world_name); @@ -598,6 +593,8 @@ int main(int argc, char *argv[]) /* SIGRTMIN+0 is used for broadcast signaling */ init_signals(); + userdb_init(USERFILE); + check_userfile(); load_worldfile(); |