9 gemini_get_path(
const char *req)
11 static char path[MAX_PATH];
14 int has_pass_hostname;
18 if (req[len - 2] !=
'\r' || req[len - 1] !=
'\n')
23 if (strncmp(
"gemini://", req, 9) != 0)
28 has_pass_hostname = 0;
29 for (i = 9, j = 0 ; i < len && j < MAX_BUFFER; i++)
31 if (req[i] ==
'\r' || req[i] ==
'\n')
36 if (!has_pass_hostname)
42 has_pass_hostname = 1;
49 if (strcmp(
"/", path) == 0)
51 strcpy(path,
"/index.gmi");
57 gemini_protocol_handler(SSL *client,
const char *srv_dir)
59 char buffer[MAX_BUFFER];
63 if ((read = SSL_read(client, buffer, MAX_BUFFER)) > 0)
67 path = gemini_get_path(buffer);
70 sprintf(buffer,
"59 Invalid URI\r\n");
71 SSL_write(client, buffer, MAX_BUFFER);