Add error codes

This commit is contained in:
2025-11-26 22:38:37 +01:00
parent a58dc241ef
commit c4c41653f4
16 changed files with 483 additions and 713 deletions
+23 -12
View File
@@ -1,31 +1,42 @@
#include "../chttp.h"
#ifdef _WIN32
#define POLL WSAPoll
#else
#define POLL poll
#endif
int main(void)
{
int ret;
HTTP_Client client;
if (http_client_init(&client) < 0)
ret = http_client_init(&client);
if (ret < 0) {
printf("Couldn't initialize client (%s)\n", http_strerror(ret));
return -1;
}
HTTP_RequestBuilder builder = http_client_get_builder(&client);
http_request_builder_trace(builder, true);
http_request_builder_method(builder, HTTP_METHOD_GET);
http_request_builder_target(builder, HTTP_STR("http://coz.is"));
http_request_builder_header(builder, HTTP_STR("Greeting: Hello from the cHTTP example!"));
if (http_request_builder_send(builder) < 0)
return -1;
ret = http_request_builder_send(builder);
if (ret < 0) {
printf("Couldn't build request (%s)\n", http_strerror(ret));
return -1;
}
int result;
void *user;
HTTP_Response *response;
if (http_client_wait_response(&client, &response, &user) < 0)
ret = http_client_wait_response(&client, &result, &user, &response);
if (ret < 0) {
printf("Couldn't wait for response (%s)\n", http_strerror(ret));
return -1;
}
printf("Received a response!\n");
if (result == HTTP_OK) {
printf("Received %d bytes\n", response->body.len);
} else {
printf("Couldn't receive response (%s)\n", http_strerror(result));
}
http_client_free(&client);
return 0;
+18 -31
View File
@@ -1,51 +1,38 @@
#include "../chttp.h"
#ifdef _WIN32
#define POLL WSAPoll
#else
#define POLL poll
#endif
int main(void)
{
int ret;
HTTP_Server server;
if (http_server_init(&server) < 0)
ret = http_server_init(&server);
if (ret < 0) {
fprintf(stderr, "Couldn't initialize server (%s)\n", http_strerror(ret));
return -1;
}
http_server_set_reuse_addr(&server, true);
http_server_set_trace_bytes(&server, true);
if (http_server_listen_tcp(&server, HTTP_STR("127.0.0.1"), 8080) < 0)
ret = http_server_listen_tcp(&server, HTTP_STR("127.0.0.1"), 8080);
if (ret < 0) {
fprintf(stderr, "Couldn't start listening (%s)\n", http_strerror(ret));
return -1;
}
for (;;) {
void *ptrs[HTTP_SERVER_POLL_CAPACITY];
struct pollfd polled[HTTP_SERVER_POLL_CAPACITY];
EventRegister reg = {
.ptrs=ptrs,
.polled=polled,
.max_polled=HTTP_SERVER_POLL_CAPACITY,
.num_polled=0,
};
if (http_server_register_events(&server, &reg) < 0)
return -1;
if (reg.num_polled > 0)
POLL(reg.polled, reg.num_polled, -1);
if (http_server_process_events(&server, &reg) < 0)
return -1;
HTTP_Request *request;
HTTP_ResponseBuilder builder;
if (http_server_next_request(&server, &request, &builder)) {
http_response_builder_status(builder, 200);
http_response_builder_body(builder, HTTP_STR("Hello, world!"));
http_response_builder_send(builder);
int ret = http_server_wait_request(&server, &request, &builder);
if (ret < 0) {
fprintf(stderr, "Couldn't wait for request (%s)\n", http_strerror(ret));
return -1;
}
http_response_builder_status(builder, 200);
http_response_builder_body(builder, HTTP_STR("Hello, world!"));
http_response_builder_send(builder);
}
http_server_free(&server);