mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-07 03:07:05 -04:00
regress_http: add tests for evhttp_connection_get_addr()
This commit is contained in:
parent
0c7f0405e3
commit
4dd500cdf4
@ -3664,6 +3664,69 @@ http_ipv6_for_domain_test(void *arg)
|
||||
regress_clean_dnsserver();
|
||||
}
|
||||
|
||||
static void
|
||||
http_request_get_addr_on_close(struct evhttp_connection *evcon, void *arg)
|
||||
{
|
||||
const struct sockaddr *storage;
|
||||
char addrbuf[128];
|
||||
char local[] = "127.0.0.1:";
|
||||
|
||||
test_ok = 0;
|
||||
tt_assert(evcon);
|
||||
|
||||
storage = evhttp_connection_get_addr(evcon);
|
||||
tt_assert(storage);
|
||||
|
||||
evutil_format_sockaddr_port_((struct sockaddr *)storage, addrbuf, sizeof(addrbuf));
|
||||
tt_assert(!strncmp(addrbuf, local, sizeof(local) - 1));
|
||||
|
||||
test_ok = 1;
|
||||
return;
|
||||
|
||||
end:
|
||||
test_ok = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
http_get_addr_test(void *arg)
|
||||
{
|
||||
struct basic_test_data *data = arg;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
test_ok = 0;
|
||||
exit_base = data->base;
|
||||
|
||||
http = http_setup(&port, data->base, 0);
|
||||
|
||||
evcon = evhttp_connection_base_new(data->base, NULL, "127.0.0.1", port);
|
||||
tt_assert(evcon);
|
||||
evhttp_connection_set_closecb(evcon, http_request_get_addr_on_close, arg);
|
||||
|
||||
/*
|
||||
* At this point, we want to schedule a request to the HTTP
|
||||
* server using our make request method.
|
||||
*/
|
||||
|
||||
req = evhttp_request_new(http_request_done, (void *)BASIC_REQUEST_BODY);
|
||||
|
||||
/* We give ownership of the request to the connection */
|
||||
if (evhttp_make_request(evcon, req, EVHTTP_REQ_GET, "/test") == -1) {
|
||||
tt_abort_msg("Couldn't make request");
|
||||
}
|
||||
|
||||
event_base_dispatch(data->base);
|
||||
|
||||
http_request_get_addr_on_close(evcon, NULL);
|
||||
|
||||
end:
|
||||
if (evcon)
|
||||
evhttp_connection_free(evcon);
|
||||
if (http)
|
||||
evhttp_free(http);
|
||||
}
|
||||
|
||||
#define HTTP_LEGACY(name) \
|
||||
{ #name, run_legacy_test_fn, TT_ISOLATED|TT_LEGACY, &legacy_setup, \
|
||||
http_##name##_test }
|
||||
@ -3713,6 +3776,7 @@ struct testcase_t http_testcases[] = {
|
||||
HTTP(data_length_constraints),
|
||||
|
||||
HTTP(ipv6_for_domain),
|
||||
HTTP(get_addr),
|
||||
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user