static bool HHVM_METHOD(EventHttp, addServerAlias, const String &alias) { EventHttpResourceData *resource_data = FETCH_RESOURCE(this_, EventHttpResourceData, s_event_http); return evhttp_add_server_alias((evhttp_t *)resource_data->getInternalResourceData(), alias.c_str()) == 0; }
void *http_server(apr_thread_t* t, void* d) { http_server_data_t *server_data = d; struct event_config *cfg = event_config_new(); struct event_base *base = NULL; struct evhttp *http = NULL; int i = 0; event_config_set_flag(cfg, EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST); base = event_base_new_with_config(cfg); if (!base) { LOG4C_ERROR(logger, "Couldn't create an event_base: exiting"); goto done; } event_config_free(cfg); /* Create a new evhttp object to handle requests. */ http = evhttp_new(base); if (!http) { LOG4C_ERROR(logger, "couldn't create evhttp. Exiting."); goto done; } evhttp_add_server_alias(http, "TVersity-Virtual-STB"); for (i = 0; i < server_data->num_handlers; i++) { evhttp_set_cb(http, server_data->handlers[i].uri, http_request_cb, &(server_data->handlers[i])); } //set up static file handler if (server_data->static_root) { evhttp_set_gencb(http, static_files_cb, (void *) server_data->static_root); } struct evhttp_bound_socket *handle = evhttp_accept_socket_with_handle(http, server_data->sock); if (!handle) { LOG4C_ERROR(logger, "could not accept on socket"); goto done; } server_base[server_data->server_index] = base; event_base_dispatch(base); done: if(server_data) free(server_data); if(http) { evhttp_free(http); } if (base) { server_base[server_data->server_index] = NULL; event_base_free(base); } apr_atomic_dec32(&num_servers); return NULL; }