don't munge "=> ?!"
[gemrepl.git] / gemscgi.h
blobc18a89e016c8c6a2fda80e635e65b206a1ebd89f
1 #include <stddef.h>
3 typedef struct Request_Info {
4 // url decoded query string:
5 const char *query_string_decoded;
7 const char *script_path;
8 const char *path_info;
9 const char *server_name;
10 const char *server_port;
11 const char *remote_addr;
13 // tls client hash with any 'SHA256:' prefix stripped.
14 // At least with molly-brown and GLV-1.12556, this will be the sha256 hash
15 // of the certificate as a 64 character hex string.
16 const char *tls_client_hash;
18 const char *tls_client_issuer;
19 const char *tls_client_issuer_cn;
20 const char *tls_client_subject;
21 const char *tls_client_subject_cn;
22 } Request_Info;
24 typedef void write_response_cb(const void *object, const char* buf, size_t n);
25 typedef void respond_cb(void *object, const Request_Info *request_info,
26 int socket);
28 /* Create a socket at `socket_path` and accept valid SCGI requests with empty
29 * body; for each such, `respond` will be called with `respond_object` and a
30 * `Request_Info` struct filled in according to the request headers. This
31 * should (optionally in a new thread) write its response to the fd `socket`
32 * and then close `socket`. */
33 void runSCGI(const char *socket_path, respond_cb respond, void *respond_object);