/* * assert initiating two separate daemons and having one shut down * doesn't affect the other */ static int test_concurent_daemon_pair (void *cls, const char *cipher_suite, int proto_version) { int ret; struct MHD_Daemon *d1; struct MHD_Daemon *d2; d1 = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION | MHD_USE_SSL | MHD_USE_DEBUG, DEAMON_TEST_PORT, NULL, NULL, &http_ahc, NULL, MHD_OPTION_HTTPS_MEM_KEY, srv_key_pem, MHD_OPTION_HTTPS_MEM_CERT, srv_self_signed_cert_pem, MHD_OPTION_END); if (d1 == NULL) { fprintf (stderr, MHD_E_SERVER_INIT); return -1; } d2 = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION | MHD_USE_SSL | MHD_USE_DEBUG, DEAMON_TEST_PORT + 1, NULL, NULL, &http_ahc, NULL, MHD_OPTION_HTTPS_MEM_KEY, srv_key_pem, MHD_OPTION_HTTPS_MEM_CERT, srv_self_signed_cert_pem, MHD_OPTION_END); if (d2 == NULL) { MHD_stop_daemon (d1); fprintf (stderr, MHD_E_SERVER_INIT); return -1; } ret = test_daemon_get (NULL, cipher_suite, proto_version, DEAMON_TEST_PORT, 0); ret += test_daemon_get (NULL, cipher_suite, proto_version, DEAMON_TEST_PORT + 1, 0); MHD_stop_daemon (d2); ret += test_daemon_get (NULL, cipher_suite, proto_version, DEAMON_TEST_PORT, 0); MHD_stop_daemon (d1); return ret; }
/* perform a HTTP GET request via SSL/TLS */ static int test_secure_get (void * cls, char *cipher_suite, int proto_version) { int ret; struct MHD_Daemon *d; d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION | MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_TLS | MHD_USE_ERROR_LOG, DEAMON_TEST_PORT, NULL, NULL, &http_ahc, NULL, MHD_OPTION_HTTPS_MEM_KEY, srv_signed_key_pem, MHD_OPTION_HTTPS_MEM_CERT, srv_signed_cert_pem, MHD_OPTION_END); if (d == NULL) { fprintf (stderr, MHD_E_SERVER_INIT); return -1; } ret = test_daemon_get (NULL, cipher_suite, proto_version, DEAMON_TEST_PORT, 0); MHD_stop_daemon (d); return ret; }