#include "rmalloc.h" #include "rhttp.h" #include "rtest.h" #include int request_handler(rhttp_request_t *r) { rhttp_send_drain(r->c, "HTTP/1.1 200 OK\r\n" "Content-Length: 3\r\n" "Connection: close\r\n\r\n" "Ok!", 0); close(r->c); return 1; } rhttp_request_handler_t handler = request_handler; void *rhttp_serve_thread(void *port_arg) { int port = *(int *)port_arg; rhttp_serve(rhttp_opt_host, port, 1024, rhttp_opt_request_logging, rhttp_opt_debug, handler, NULL); return NULL; } int main(int argc, char *argv[]) { bool do_test = true; int port = 9876; for (int i = 1; i < argc; i++) { if (!strcmp(argv[i], "--serve")) { printf("rhttp serve mode\n"); printf("Handlers available:\n"); printf(" - rhttp_root (/)\n"); printf(" - rhttp_counter (/counter*)\n"); printf(" - rhttp_404 (/*)\n"); do_test = false; } if (!strcmp(argv[i], "--quiet")) { rhttp_opt_info = false; rhttp_opt_warn = false; rhttp_opt_request_logging = false; rhttp_opt_debug = false; printf("Quiet mode enabled\n"); } if (atoi(argv[i])) { port = atoi(argv[i]); } } if (do_test) { rtest_banner("rhttp"); } else { printf("Serving on %s:%d\n", rhttp_opt_host, port); handler = rhttp_default_request_handler; } pthread_t st; pthread_create(&st, 0, rhttp_serve_thread, (void *)&port); char *response = rhttp_client_get("127.0.0.1", port, "/"); if (do_test) { rassert(!strcmp(response, "Ok!")); pthread_cancel(st); // cleanup } else { pthread_join(st, NULL); } // rhttp_main(argc, argv); if (do_test) return rtest_end(""); return 0; }