diff options
author | Test_User <hax@andrewyu.org> | 2024-06-15 14:16:50 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2024-06-15 14:16:50 -0400 |
commit | 88f9b2248bfb016514e340ee5eb81df7337fcc94 (patch) | |
tree | e206d68ce2dddd539f0694b85e04e2a49337b700 /main.c | |
parent | 8dca8643675830723d37f064d5417fb3e035385e (diff) | |
download | haxircd-88f9b2248bfb016514e340ee5eb81df7337fcc94.tar.gz haxircd-88f9b2248bfb016514e340ee5eb81df7337fcc94.zip |
Improvements and the start of reloadable modules
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 108 |
1 files changed, 8 insertions, 100 deletions
@@ -1,4 +1,4 @@ -// "Main" file for haxserv +// One of the code files for HaxServ // // Written by: Test_User <hax@andrewyu.org> // @@ -26,108 +26,16 @@ // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. -#include <signal.h> -#include <pthread.h> - -#include "config.h" -#include "general_network.h" -#include "main.h" - -#ifdef USE_PLAINTEXT -#include "plaintext_network.h" -#endif -#ifdef USE_GNUTLS -#include "gnutls_network.h" -#endif -#ifdef USE_OPENSSL -#include "openssl_network.h" -#endif - -#ifdef USE_SERVER -#include "server_network.h" -#endif -#ifdef USE_CLIENT -#include "client_network.h" -#endif - -#ifdef USE_INSPIRCD2_PROTOCOL -#include "protocols/inspircd2.h" -#endif - -#ifdef USE_PSUEDOCLIENTS -#include "psuedoclients.h" -#endif - -#ifdef USE_HAXSERV_PSUEDOCLIENT -#include "psuedoclients/haxserv.h" -#endif - -pthread_attr_t pthread_attr; -pthread_mutexattr_t pthread_mutexattr; - -pthread_mutex_t state_lock = PTHREAD_MUTEX_INITIALIZER; +#include <dlfcn.h> +#include <stdio.h> int main(void) { - if (init_general_network() != 0) - return 1; - -#ifdef USE_PLAINTEXT - if (init_plaintext_network() != 0) // there's not really anything to do ahead of time with plain tcp networking, this is just here for consistency - return 1; -#endif - -#ifdef USE_GNUTLS - if (init_gnutls_network() != 0) - return 1; -#endif - -#ifdef USE_OPENSSL - if (init_openssl_network() != 0) - return 1; -#endif - -#ifdef USE_SERVER - if (init_server_network() != 0) + void *dl_handle = dlopen("./haxserv.so", RTLD_NOW | RTLD_GLOBAL); + if (!dl_handle) { + puts(dlerror()); return 1; -#endif - -#ifdef USE_CLIENT - if (init_client_network() != 0) - return 1; -#endif - -#ifdef USE_PSUEDOCLIENTS - if (init_psuedoclients() != 0) - return 1; -#endif - - { - struct sigaction tmp = { - .sa_handler = SIG_IGN, - }; - sigaction(SIGPIPE, &tmp, 0); } - if (pthread_attr_init(&pthread_attr) != 0) - return 1; - - if (pthread_mutexattr_init(&pthread_mutexattr) != 0) - return 1; - - if (pthread_attr_setdetachstate(&pthread_attr, PTHREAD_CREATE_DETACHED) != 0) // shouldn't actually happen - return 1; - -#ifdef USE_CLIENT - if (start_client_network() != 0) - return 1; -#endif - -#ifdef USE_SERVER - if (start_server_network() != 0) - return 1; -#endif - - pthread_exit(0); - - return 0; + int (*real_main)(void) = dlsym(dl_handle, "real_main"); + return real_main(); } |