int main(int argc, char** argv) { bud_config_t* config; bud_error_t err; #ifndef _WIN32 /* Ignore SIGPIPE */ signal(SIGPIPE, SIG_IGN); #endif /* !_WIN32 */ bud_init_openssl(); config = bud_config_cli_load(argc, argv, &err); /* NOTE: bud_config_load will print everything itself */ if (config == NULL) goto fatal; if (config->is_worker) err = bud_worker(config); else err = bud_master(config); if (bud_is_ok(err)) uv_run(config->loop, UV_RUN_DEFAULT); /* Finalize server */ if (config->server != NULL) { if (config->is_worker) err = bud_worker_finalize(config); else err = bud_master_finalize(config); } uv_run(config->loop, UV_RUN_NOWAIT); fatal: if (config != NULL) bud_config_free(config); if (!bud_is_ok(err)) { bud_error_print(stderr, err); return -1; } return 0; }
int main(int argc, char** argv) { bud_config_t* config; bud_error_t err; bud_init_openssl(); config = bud_config_cli_load(uv_default_loop(), argc, argv, &err); /* NOTE: bud_config_load will print everything itself */ if (config == NULL) goto fatal; if (config->is_worker) err = bud_worker(config); else err = bud_master(config); if (bud_is_ok(err)) uv_run(config->loop, UV_RUN_DEFAULT); /* Finalize server */ if (config->server != NULL) { if (!config->is_worker) err = bud_master_finalize(config); bud_server_free(config); } uv_run(config->loop, UV_RUN_ONCE); fatal: if (config != NULL) bud_config_free(config); if (!bud_is_ok(err)) { bud_error_print(stderr, err); return -1; } return 0; }