diff options
author | Jared Adams <jaxad0127@gmail.com> | 2010-01-18 19:36:34 +0000 |
---|---|---|
committer | Jared Adams <jaxad0127@gmail.com> | 2010-02-02 16:36:14 -0700 |
commit | 809146978c6b85bb00ca2441ef2490441f4a91da (patch) | |
tree | df31de5150485c6d531e323e9ad5ae1fe7c57e9b | |
parent | 88b9a3ac5b0e2b99d1105d69d4b0da608d7ae1e4 (diff) | |
download | tmwa-809146978c6b85bb00ca2441ef2490441f4a91da.tar.gz tmwa-809146978c6b85bb00ca2441ef2490441f4a91da.tar.bz2 tmwa-809146978c6b85bb00ca2441ef2490441f4a91da.tar.xz tmwa-809146978c6b85bb00ca2441ef2490441f4a91da.zip |
Attempt to fix forking problem on platinum
-rw-r--r-- | src/char/char.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/char/char.c b/src/char/char.c index 2b25399..3755d1f 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -16,6 +16,7 @@ #include <arpa/inet.h> #include <netdb.h> #include <stdarg.h> +#include <sys/wait.h> #include "core.h" #include "socket.h" @@ -114,6 +115,8 @@ int online_gm_display_min_level = 20; // minimum GM level to display 'GM' when int *online_chars; // same size of char_dat, and id value of current server (or -1) time_t update_online; // to update online files when we receiving information from a server (not less than 8 seconds) +pid_t pid = 0; // For forked DB writes + //------------------------------ // Writing function of logs file //------------------------------ @@ -828,7 +831,17 @@ void mmo_char_sync (void) //---------------------------------------------------- int mmo_char_sync_timer (int tid, unsigned int tick, int id, int data) { - pid_t pid; + if (pid != 0) + { + int status; + pid_t temp = waitpid (pid, &status, WNOHANG); + + // Need to check status too? + if (temp == 0) + { + return 0; + } + } // This can take a lot of time. Fork a child to handle the work and return at once // If we're unable to fork just continue running the function normally |