return http_error;
}
+void ConvertHttpRequestBodyToServerEncoding(struct HttpRequest *request)
+{
+ char *body_utf8 = getUTF8FromLatin1(request->body);
+
+ strcpy(request->body, body_utf8);
+ checked_free(body_utf8);
+}
+
+void ConvertHttpResponseBodyToClientEncoding(struct HttpResponse *response)
+{
+ char *body_latin1 = getLatin1FromUTF8(response->body);
+
+ strcpy(response->body, body_latin1);
+ checked_free(body_latin1);
+
+ response->body_size = strlen(response->body);
+}
+
static void SetHttpResponseToDefaults(struct HttpResponse *response)
{
response->head[0] = '\0';
return TRUE;
}
-boolean DoHttpRequest(struct HttpRequest *request,
- struct HttpResponse *response)
+static boolean DoHttpRequestExt(struct HttpRequest *request,
+ struct HttpResponse *response,
+ char *send_buffer,
+ char *recv_buffer,
+ int max_http_buffer_size)
{
SDLNet_SocketSet socket_set;
TCPsocket socket;
request->hostname,
(int)strlen(request->body));
- int max_http_buffer_size = MAX_HTTP_HEAD_SIZE + MAX_HTTP_BODY_SIZE;
- char send_buffer[max_http_buffer_size + 1];
- char recv_buffer[max_http_buffer_size + 1];
-
snprintf(send_buffer, max_http_buffer_size,
"%s\r\n%s", request->head, request->body);
return TRUE;
}
+
+boolean DoHttpRequest(struct HttpRequest *request,
+ struct HttpResponse *response)
+{
+ int max_http_buffer_size = MAX_HTTP_HEAD_SIZE + MAX_HTTP_BODY_SIZE;
+ char *send_buffer = checked_malloc(max_http_buffer_size + 1);
+ char *recv_buffer = checked_malloc(max_http_buffer_size + 1);
+
+ boolean success = DoHttpRequestExt(request, response,
+ send_buffer, recv_buffer,
+ max_http_buffer_size);
+
+ checked_free(send_buffer);
+ checked_free(recv_buffer);
+
+ return success;
+}