mirror of
https://github.com/sigmasternchen/Serwer
synced 2025-03-14 22:58:54 +00:00
better logging + clearification
This commit is contained in:
parent
7603e2decc
commit
277a00b1fe
6 changed files with 33 additions and 16 deletions
|
@ -60,8 +60,8 @@ srvoptions_t options = {
|
|||
.loglevel = LOG_DEBUG // the log level for the logfile
|
||||
};
|
||||
|
||||
// webserver_t ws_create(const char* name, const char* host (can be NULL for default), const char* port, FILE* logfile, srvoptions_t options);
|
||||
webserver_t server = ws_create("server_name", NULL, "8080", stderr, options);
|
||||
// webserver_t ws_create(const char* name, const char* host (can be ANY for any), const char* port, FILE* logfile, srvoptions_t options);
|
||||
webserver_t server = ws_create("server_name", ANY, "8080", stderr, options);
|
||||
```
|
||||
|
||||
Now you can add you handlers.
|
||||
|
|
|
@ -42,10 +42,10 @@ int main(int argc, char** argv) {
|
|||
.mode = LINEAR,
|
||||
.timeout = 30,
|
||||
.maxconnections = 5,
|
||||
.loglevel = LOG_DEBUG
|
||||
.loglevel = LOG_WARN
|
||||
};
|
||||
|
||||
webserver_t server = ws_create("test_server", NULL , "8080", stderr, options);
|
||||
webserver_t server = ws_create("test_server", ANY , "8080", stderr, options);
|
||||
|
||||
ws_handle_add(&server, hello_handle);
|
||||
ws_handle_add(&server, test_handle);
|
||||
|
|
19
serwer.c
19
serwer.c
|
@ -84,6 +84,7 @@ int ws_listen(webserver_t* server) {
|
|||
int s;
|
||||
|
||||
memset(&hints, 0, sizeof(struct addrinfo));
|
||||
hints.ai_flags = AI_PASSIVE; // host = NULL => IP wildcard; see getaddrinfo(2)
|
||||
hints.ai_family = AF_UNSPEC;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
|
||||
|
@ -164,7 +165,7 @@ void ws_log(webserver_t* server, loglevel_t loglevel, const char* format, ...) {
|
|||
fprintf(server->logfile, "\n");
|
||||
}
|
||||
|
||||
void ws_send(int connfd, int code, headers_t headers, int pipefd) {
|
||||
size_t ws_send(int connfd, int code, headers_t headers, int pipefd) {
|
||||
stream_t connection = (stream_t) fdopen(connfd, "a+");
|
||||
|
||||
setbuf(connection, NULL);
|
||||
|
@ -188,19 +189,25 @@ void ws_send(int connfd, int code, headers_t headers, int pipefd) {
|
|||
|
||||
if (pipefd == -1) {
|
||||
fclose(connection);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
char buffer[BUFFER_SIZE];
|
||||
int bs = 0;
|
||||
while ((bs = read(pipefd, buffer, BUFFER_SIZE)) > 0)
|
||||
size_t size = 0;
|
||||
|
||||
while ((bs = read(pipefd, buffer, BUFFER_SIZE)) > 0) {
|
||||
size += bs;
|
||||
write(connfd, buffer, bs);
|
||||
}
|
||||
|
||||
fclose(connection);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
void ws_simple_status(int connfd, int code) {
|
||||
ws_send(connfd, code, (headers_t) {
|
||||
(void) ws_send(connfd, code, (headers_t) {
|
||||
.fields = NULL,
|
||||
.nrfields = 0
|
||||
}, -1);
|
||||
|
@ -208,8 +215,12 @@ void ws_simple_status(int connfd, int code) {
|
|||
|
||||
|
||||
int ws_run(webserver_t* server) {
|
||||
ws_log(server, LOG_MESSAGE, "server \"%s\" started on %s:%s", server->name,
|
||||
server->host == NULL ? "0.0.0.0" : server->host, server->port);
|
||||
|
||||
switch(server->options.mode) {
|
||||
case LINEAR:
|
||||
ws_log(server, LOG_DEBUG, "starting linear handler");
|
||||
return ws_run_linear(server);
|
||||
default:
|
||||
errno = EBADRQC;
|
||||
|
|
9
serwer.h
9
serwer.h
|
@ -13,6 +13,13 @@
|
|||
#define WS_VERSION "0.1"
|
||||
#define WS_NAME "Serwer"
|
||||
|
||||
#define LOG_TESTING 11
|
||||
#define LOG_DEBUG 10
|
||||
#define LOG_VERBOSE 5
|
||||
#define LOG_WARN 2
|
||||
#define LOG_MESSAGE 1
|
||||
#define LOG_ERROR 0
|
||||
|
||||
headers_t ws_headers_create(void);
|
||||
void ws_headers_add(headers_t*, const char*, const char*);
|
||||
void ws_headers_convert(headers_t*, char*);
|
||||
|
@ -21,7 +28,7 @@ void ws_headers_free(headers_t*);
|
|||
void ws_handle_add(webserver_t*, handle_t);
|
||||
handler_t ws_handler_find(webserver_t*, const char*, const char*);
|
||||
|
||||
void ws_send(int, int, headers_t, int);
|
||||
size_t ws_send(int, int, headers_t, int);
|
||||
void ws_simple_status(int, int);
|
||||
|
||||
webserver_t ws_create(const char*, const char*, const char*, FILE*, srvoptions_t);
|
||||
|
|
|
@ -138,7 +138,7 @@ int ws_run_linear(webserver_t* server) {
|
|||
|
||||
// send
|
||||
ws_log(server, LOG_TESTING, "sending response");
|
||||
ws_send(connfd, code, responseHeaders, pipefd[0]);
|
||||
size_t response_size = ws_send(connfd, code, responseHeaders, pipefd[0]);
|
||||
|
||||
// cleanup
|
||||
ws_log(server, LOG_DEBUG, "cleanup");
|
||||
|
@ -148,6 +148,11 @@ int ws_run_linear(webserver_t* server) {
|
|||
|
||||
ws_log(server, LOG_TESTING, "done");
|
||||
|
||||
if (s == 0)
|
||||
ws_log(server, LOG_MESSAGE, "%s:%s - %s %s @ %s, %i, %i bytes", phost, service, ws_method_string(method), path, host, code, response_size);
|
||||
else
|
||||
ws_log(server, LOG_MESSAGE, "-:- - %s %s @ %s, %i, %i bytes", ws_method_string(method), path, host, code, response_size);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,12 +17,6 @@ typedef FILE* stream_t;
|
|||
|
||||
typedef int loglevel_t;
|
||||
|
||||
#define LOG_TESTING 11
|
||||
#define LOG_DEBUG 10
|
||||
#define LOG_VERBOSE 5
|
||||
#define LOG_WARN 2
|
||||
#define LOG_ERROR 0
|
||||
|
||||
#define ANY NULL
|
||||
|
||||
typedef enum method {
|
||||
|
|
Loading…
Reference in a new issue