diff options
| author | Drew DeVault <sir@cmpwn.com> | 2020-09-23 12:40:28 -0400 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2020-09-23 12:43:05 -0400 |
| commit | 65c2a56c6d62e3c24d52da8c63f306b70becdb45 (patch) | |
| tree | 3fab5e106777ddaeb2d9b2b35e9c5adfd5f634b2 /include | |
| parent | 9adc6f34c7497cf2fde21cd1dfdf87ba3296b559 (diff) | |
| download | gmnisrv-65c2a56c6d62e3c24d52da8c63f306b70becdb45.tar.gz gmnisrv-65c2a56c6d62e3c24d52da8c63f306b70becdb45.tar.xz gmnisrv-65c2a56c6d62e3c24d52da8c63f306b70becdb45.zip | |
Initialize sockets
Diffstat (limited to 'include')
| -rw-r--r-- | include/config.h | 2 | ||||
| -rw-r--r-- | include/server.h | 31 |
2 files changed, 33 insertions, 0 deletions
diff --git a/include/config.h b/include/config.h index f9d875c..dec0e15 100644 --- a/include/config.h +++ b/include/config.h @@ -15,6 +15,7 @@ struct gmnisrv_host { }; struct gmnisrv_bind { + char *name; int family, port; char addr[sizeof(struct in6_addr)]; struct gmnisrv_bind *next; @@ -27,6 +28,7 @@ struct gmnisrv_config { }; int load_config(struct gmnisrv_config *conf, const char *path); +void config_finish(struct gmnisrv_config *conf); struct gmnisrv_host *gmnisrv_config_get_host( struct gmnisrv_config *conf, const char *hostname); diff --git a/include/server.h b/include/server.h new file mode 100644 index 0000000..8547799 --- /dev/null +++ b/include/server.h @@ -0,0 +1,31 @@ +#ifndef GMNISRV_SERVER +#define GMNISRV_SERVER +#include <poll.h> + +#define GEMINI_MAX_URL 1024 + +struct gmnisrv_client { + char buf[GEMINI_MAX_URL + 2]; + size_t bufln; + int sockfd; + int respfd; +}; + +struct gmisrv_config; + +struct gmnisrv_server { + struct gmnisrv_config *conf; + struct pollfd *fds; + nfds_t nfds, fdsz; + + size_t nlisten; + + struct gmnisrv_client *clients; + size_t nclients, clientsz; +}; + +int server_init(struct gmnisrv_server *server, struct gmnisrv_config *conf); +void server_run(struct gmnisrv_server *server); +void server_finish(struct gmnisrv_server *server); + +#endif |
