Tree for my work on http://tools.suckless.org/quark/
Find a file
Laslo Hunhold c51b31d7ac
Refactor response-generation
I wasn't happy with how responses were generated. HTTP-headers were
handled by hand and it was duplicated in multiple parts of the code.
Due to the duplication, some functions like timestamp() had really
ugly semantics.

The HTTP requests are parsed much better: We have an enum of fields
we care about that are automatically read into our request struct. This
commit adapts this idea to the response: We have an enum of fields
we might put into our response, and a response-struct holds the
content of these fields. A function http_send_header() automatically
sends a header based on the entries in response. In case we don't
use a field, we just leave the field in the response-struct empty.

With this commit, some logical changes came with it:

  - timestamp() now has a sane signature, TIMESTAMP_LEN is no more and
    it can now return proper errors and is also reentrant by using
    gmtime_r() instead of gmtime()
  - No more use of a static timestamp-array, making all the methods
    also reentrant
  - Better internal-error-reporting: Because the fields are filled
    before and not during sending the response-headers, we can better
    report any internal errors as status 500 instead of sending a
    partial non-500-header and then dying.

These improved data structures make it easier to read and hack the code
and implement new features, if desired.

Signed-off-by: Laslo Hunhold <dev@frign.de>
2020-08-05 13:41:44 +02:00
arg.h Correct arg.h license 2018-07-16 11:49:51 +02:00
config.def.h Specify UTF-8 for non-binary content-types 2019-01-02 17:04:23 +01:00
config.mk Be extra pedantic again and remove all warnings 2018-03-05 00:30:53 +01:00
http.c Refactor response-generation 2020-08-05 13:41:44 +02:00
http.h Refactor response-generation 2020-08-05 13:41:44 +02:00
LICENSE Use timegm() instead of mktime() to generate UNIX-timestamp 2020-07-23 16:48:34 +02:00
main.c Make host parameters optional 2020-04-21 17:04:52 +02:00
Makefile Refactor the single source file into multiple modules 2018-02-04 21:27:33 +01:00
quark.1 Make host parameters optional 2020-04-21 17:04:52 +02:00
resp.c Refactor response-generation 2020-08-05 13:41:44 +02:00
resp.h Refactor the single source file into multiple modules 2018-02-04 21:27:33 +01:00
sock.c Use compound literals and explicit initialization 2019-05-30 23:15:47 +02:00
sock.h Refactor the single source file into multiple modules 2018-02-04 21:27:33 +01:00
util.c Refactor response-generation 2020-08-05 13:41:44 +02:00
util.h Refactor response-generation 2020-08-05 13:41:44 +02:00