summaryrefslogtreecommitdiffstats
path: root/include/server.h
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2020-09-26 13:39:37 -0400
committerDrew DeVault <sir@cmpwn.com>2020-09-26 13:39:37 -0400
commitce467cebd38df71cc221c37cc4303066adeea258 (patch)
treeabaefb1c5fb35898052831d68039517c5ab8dfc3 /include/server.h
parent5388725d41574bede939f0ae3b64b14b7e3346d9 (diff)
downloadgmnisrv-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.h22
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;