in source/credentials_provider_x509.c [343:433]
static int s_make_x509_http_query(
struct aws_credentials_provider_x509_user_data *x509_user_data,
struct aws_byte_cursor *request_path) {
AWS_FATAL_ASSERT(x509_user_data->connection);
struct aws_http_stream *stream = NULL;
struct aws_http_message *request = aws_http_message_new_request(x509_user_data->allocator);
if (request == NULL) {
return AWS_OP_ERR;
}
struct aws_credentials_provider_x509_impl *impl = x509_user_data->x509_provider->impl;
struct aws_http_header thing_name_header = {
.name = aws_byte_cursor_from_string(s_x509_thing_name_header),
.value = aws_byte_cursor_from_buf(&impl->thing_name),
};
if (aws_http_message_add_header(request, thing_name_header)) {
goto on_error;
}
struct aws_http_header accept_header = {
.name = aws_byte_cursor_from_string(s_x509_accept_header),
.value = aws_byte_cursor_from_string(s_x509_accept_header_value),
};
if (aws_http_message_add_header(request, accept_header)) {
goto on_error;
}
struct aws_http_header user_agent_header = {
.name = aws_byte_cursor_from_string(s_x509_user_agent_header),
.value = aws_byte_cursor_from_string(s_x509_user_agent_header_value),
};
if (aws_http_message_add_header(request, user_agent_header)) {
goto on_error;
}
struct aws_http_header keep_alive_header = {
.name = aws_byte_cursor_from_string(s_x509_h1_0_keep_alive_header),
.value = aws_byte_cursor_from_string(s_x509_h1_0_keep_alive_header_value),
};
if (aws_http_message_add_header(request, keep_alive_header)) {
goto on_error;
}
struct aws_http_header host_header = {
.name = aws_byte_cursor_from_string(s_x509_host_header),
.value = aws_byte_cursor_from_buf(&impl->endpoint),
};
if (aws_http_message_add_header(request, host_header)) {
goto on_error;
}
if (aws_http_message_set_request_path(request, *request_path)) {
goto on_error;
}
if (aws_http_message_set_request_method(request, aws_byte_cursor_from_c_str("GET"))) {
goto on_error;
}
x509_user_data->request = request;
struct aws_http_make_request_options request_options = {
.self_size = sizeof(request_options),
.on_response_headers = s_x509_on_incoming_headers_fn,
.on_response_header_block_done = NULL,
.on_response_body = s_x509_on_incoming_body_fn,
.on_complete = s_x509_on_stream_complete_fn,
.user_data = x509_user_data,
.request = request,
};
stream = impl->function_table->aws_http_connection_make_request(x509_user_data->connection, &request_options);
if (!stream) {
goto on_error;
}
if (impl->function_table->aws_http_stream_activate(stream)) {
goto on_error;
}
return AWS_OP_SUCCESS;
on_error:
impl->function_table->aws_http_stream_release(stream);
aws_http_message_destroy(request);
x509_user_data->request = NULL;
return AWS_OP_ERR;
}