diff options
| author | spl3g <spleefer6@yandex.ru> | 2025-03-19 18:10:25 +0300 |
|---|---|---|
| committer | spl3g <spleefer6@yandex.ru> | 2025-03-19 18:11:18 +0300 |
| commit | f8c44ab2e6107b5fca3c7375b368c18ef7704fc0 (patch) | |
| tree | 912ed71a24376d617ba4b3fbac9a860dbaa92c86 | |
| parent | 7a9d112ffa5b954baa43f2eddaa50ec1bd88f96f (diff) | |
Add http_log function
| -rw-r--r-- | lib/http.c | 26 | ||||
| -rw-r--r-- | lib/http.h | 8 |
2 files changed, 31 insertions, 3 deletions
@@ -60,6 +60,27 @@ void sigchld_handler() { errno = saved_errno; } +void http_log(http_log_level log, char *fmt, ...) { + switch (log) { + case HTTP_INFO: + fprintf(stderr, "[INFO] "); + break; + + case HTTP_WARNING: + fprintf(stderr, "[WARNING] "); + break; + + case HTTP_ERROR: + fprintf(stderr, "[ERROR] "); + break; + } + + va_list args; + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); +} + void *get_in_addr(struct sockaddr *sa) { if (sa->sa_family == AF_INET) { @@ -421,11 +442,10 @@ int listen_and_serve(struct server *serv) { perror("listen"); return 1; } - + char my_ipstr[INET6_ADDRSTRLEN]; inet_ntop(serv->addr->sa_family, get_in_addr(serv->addr), my_ipstr, sizeof my_ipstr); - printf("Listening on %s:%d\n", my_ipstr, get_in_port(serv->addr)); - + http_log(HTTP_INFO, "Listening on %s:%d\n", my_ipstr, get_in_port(serv->addr)); while (keepRunning) { struct sockaddr inc_addr; @@ -14,6 +14,7 @@ #include <sys/wait.h> #include <signal.h> #include <stdlib.h> +#include <stdarg.h> #include "const_strings.h" #include "arena_strings.h" @@ -90,6 +91,12 @@ struct server { }; typedef enum { + HTTP_INFO = 0, + HTTP_WARNING, + HTTP_ERROR, +} http_log_level; + +typedef enum { CONTINUE = 100, SWITCHING_PROTOCOLS = 101, PROCESSING = 102, @@ -124,6 +131,7 @@ typedef enum { const_string get_response_string(response_code code); void *get_in_addr(struct sockaddr *sa); int get_in_port(struct sockaddr *sa); +void http_log(http_log_level log, char *fmt, ...); void set_context_value(arena *arena, context *ctx, context_value kv); void *get_context_value(context *ctx, const_string key); |
