diff options
| author | Drew DeVault <sir@cmpwn.com> | 2020-09-26 13:39:37 -0400 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2020-09-26 13:39:37 -0400 |
| commit | ce467cebd38df71cc221c37cc4303066adeea258 (patch) | |
| tree | abaefb1c5fb35898052831d68039517c5ab8dfc3 /include/server.h | |
| parent | 5388725d41574bede939f0ae3b64b14b7e3346d9 (diff) | |
| download | gmnisrv-ce467cebd38df71cc221c37cc4303066adeea258.tar.gz gmnisrv-ce467cebd38df71cc221c37cc4303066adeea258.tar.xz gmnisrv-ce467cebd38df71cc221c37cc4303066adeea258.zip | |
Parse requests and serve simple responses
Diffstat (limited to 'include/server.h')
| -rw-r--r-- | include/server.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/include/server.h b/include/server.h index 5624b52..0317de9 100644 --- a/include/server.h +++ b/include/server.h @@ -2,21 +2,39 @@ #define GMNISRV_SERVER #include <openssl/ssl.h> #include <poll.h> +#include <time.h> #include <stdbool.h> +#include "gemini.h" +#include "url.h" -#define GEMINI_MAX_URL 1024 +struct gmnisrv_server; + +enum response_state { + RESPOND_HEADER, + RESPOND_BODY, +}; struct gmnisrv_client { + struct gmnisrv_server *server; + struct timespec ctime; struct sockaddr addr; socklen_t addrlen; int sockfd; + struct pollfd *pollfd; SSL *ssl; - BIO *bio; + BIO *bio, *sbio; char buf[GEMINI_MAX_URL + 3]; + size_t bufix, bufln; + enum response_state state; + enum gemini_status status; + char *meta; + int bodyfd; + struct gmnisrv_host *host; + char *path; }; struct gmisrv_config; |
