diff --git a/README.md b/README.md index 2e9f782..3088e82 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ -# cozis/http -This is an HTTP client and server library for C. +# chttp + +chttp is an HTTP client & server library for C. + +## Why another HTTP library? This is my attempt at solving the "HTTP problem" for the C language. Writing C programs that behave as or interact with web services is always more painful than necessary in C. You either need to use `libcurl` which is overkill in most situations or link a large scale web servers to serve simple pages. This library targets smaller scale use-cases and tries to be as nice as possible to work with. Even then, it is fast. No performance is left on the table unless there is a specific reason. And if you do want to work at larger scales by using more sophisticate I/O systems (io_uring, I/O completion ports, etc) you can reuse the core state machine of the library that is I/O independant. + +I would be comfortable with chttp handling up to 1000 simultaneous connections. For anything more than that I would reuse chttp's I/O independant state machine with my own multi-threaded and more scalable I/O. + +## Features & Limitations +* HTTP/1.1 server & client +* Cross-platform (Windows & Linux) +* TLS (HTTPS) support using OpenSSL +* Minimal dependencies (libc and OpenSSL) +* Non-blocking design based on `poll()` +* I/O independant core reusable with more sophisticated I/O models +* Virtual hosts +* Single-threaded diff --git a/TODO.md b/TODO.md index 3e9c936..2e64939 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,8 @@ Allow no TLS builds make sure no TLS builds work on windows Allow resolving requests from different threads -Find a way to make sure http.h and http.c are always up to date \ No newline at end of file +Find a way to make sure http.h and http.c are always up to date +parse Transfer-Encoding +Make it cross-platform +Find a way to compile OpenSSL on windows +handle 3xx client redirections \ No newline at end of file