aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* http: Make http_decode_url return intXavier Del Campo Romero2023-11-122-33/+43
| | | | | So far, it was not possible callers to distinguish between decoding errors, as caused by ill-formed input, from fatal errors.
* http.c: Avoid use of dynstr_append_or_ret_nonzeroXavier Del Campo Romero2023-11-121-10/+46
| | | | | | | This macro would return a positive integer on failure. However, functions called by http_update should only return a positive integer for user input-related errors, not fatal errors such as those related to failed memory allocations.
* http.c: Avoid writing body for HEAD requestsXavier Del Campo Romero2023-11-121-1/+8
| | | | As opposed to GET or POST requests, HEAD must not write any body bytes.
* Bump dynstrXavier Del Campo Romero2023-11-101-0/+0
| | | | | | | | | | | | | The commit below is relevant to fix CMake builds: Author: Xavier Del Campo Romero <xavi.dcr@tutanota.com> Date: Fri Nov 10 14:43:39 2023 +0100 CMakeLists.txt: Fix missing parameter names VERSION must be indicated when passing a version string to project(). Also, LANGUAGES must be also be passed when the language name is not the only argument to project() (apart from the project name itself).
* CMakeLists.txt: Fix missing LANGUAGESXavier Del Campo Romero2023-11-101-1/+1
| | | | | When the language name is not the only argument for project() (other than the project name itself), LANGUAGES must be indicated.
* Makefile: Replace -Og with -O1v0.1.0-rc6v0.1.0Xavier Del Campo Romero2023-10-251-1/+1
| | | | | Only the latter is defined by POSIX.1-2008. Even if there are still some non-portable flags defined by CFLAGS, it is a good idea to reduce them.
* Bump dynstr to v0.1.0-rc4Xavier Del Campo Romero2023-10-251-0/+0
|
* Adhere to GNU Make directory variablesXavier Del Campo Romero2023-10-254-48/+70
|
* Makefile: Build libweb also as a shared libraryXavier Del Campo Romero2023-10-253-6/+22
|
* Bump dynstr to v0.1.0-rc3v0.1.0-rc5Xavier Del Campo Romero2023-10-251-0/+0
|
* CMakeLists.txt: set project VERSIONXavier Del Campo Romero2023-10-251-1/+1
|
* examples: Fix wrong library nameXavier Del Campo Romero2023-10-252-2/+2
|
* CMake: Use in-tree dynstr if not availablev0.1.0-rc4Xavier Del Campo Romero2023-10-162-1/+23
|
* Bump dynstr to v0.1.0-rc2Xavier Del Campo Romero2023-10-161-0/+0
|
* libweb.pc: Fix wrong -l flagXavier Del Campo Romero2023-10-161-1/+1
|
* Rename project from slweb to libwebv0.1.0-rc3Xavier Del Campo Romero2023-10-1144-196/+196
| | | | | | | | | | | | It was found out there was another project of the same name around (https://git.sr.ht/~strahinja/slweb/), also related to website generation. In order to avoid confusion, a new name has been chosen for this project. Surprisingly, libweb was not in use by any distributions (according to https://repology.org and AUR index), and it should reflect well the intention behind this project i.e., being a library to build web-related stuff.
* server.c: Replace sequential calls with loopXavier Del Campo Romero2023-10-101-14/+18
|
* http: Support HEADXavier Del Campo Romero2023-10-102-1/+6
|
* Bump dynstrv0.1.0-rc2Xavier Del Campo Romero2023-10-021-0/+0
| | | | | | | | | | | | | dynstr got its v0.1.0-rc1 release, and this commit introduces a fix: commit 0e779caae658f118d535e9f0a74f0012eefca9a0 Author: Xavier Del Campo Romero <xavi.dcr@tutanota.com> Date: Mon Oct 2 14:38:53 2023 +0200 CMakeLists.txt: add cmake_minimum_required This command is mandatory for all CMake projects. 3.0 was chosen since dynstr does not require any newer CMake features.
* Install man pagesv0.1.0-rc1Xavier Del Campo Romero2023-09-276-0/+68
|
* Add man pagesXavier Del Campo Romero2023-09-2721-0/+2246
|
* http.h: Remove stale commentXavier Del Campo Romero2023-09-271-1/+0
| | | | | This shall be replaced with more meaningful man pages for all functions in slweb.
* Add slweb.pcXavier Del Campo Romero2023-09-273-1/+24
|
* README.md: Add install instructionsXavier Del Campo Romero2023-09-271-0/+17
|
* Makefile, CMakeLists.txt: Add installation targetsXavier Del Campo Romero2023-09-272-0/+12
|
* server.c: Fix build on FreeBSDXavier Del Campo Romero2023-09-261-0/+6
|
* examples/Makefile: Add html exampleXavier Del Campo Romero2023-09-251-1/+7
|
* Add HTML serializer exampleXavier Del Campo Romero2023-09-156-0/+116
|
* CMakeLists.txt: Fix examples not buildingXavier Del Campo Romero2023-09-151-1/+1
| | | | | Default value for a CMake option() must always be passed as the third parameter.
* http: Use null-terminated string for POST dataXavier Del Campo Romero2023-09-092-5/+5
| | | | | | | | | application/x-www-form-urlencoded-data is (or should be) always text, so it is preferrable to define struct http_post member "data" as a null- terminated string. For applications already making this assumption, this change should now remove the need for string duplication.
* .gitignore: Add examples/hello/helloXavier Del Campo Romero2023-09-091-0/+1
|
* http: Insert name into http_post_fileXavier Del Campo Romero2023-09-092-1/+2
| | | | | Whereas slcl, the project where slweb started, ignored this field, some applications might require it.
* http: Allow multiple non-file Content-DispositionXavier Del Campo Romero2023-09-092-14/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now, slweb accepts requests such as: --boundary Content-Disposition: form-data; name="field1" value1 --boundary Content-Disposition: form-data; name="field2" value2 --boundary Content-Disposition: form-data; name="field3"; filename="example.txt" The following breaking changes have been introduced: Member "dir" from struct http_post was a leftover from the days where slcl and slweb were one project. It did not make sense for slweb, since it should not decide which Content-Disposition names are allowed. In other words, "dir" was only relevant in the scope of slcl. Member "n" from struct http_post used to have two meanings: - The length of a URL-encoded request. - The number of files on a multipart/form-data request. Since "npairs" had to be introduced to struct http_post, it did not make sense to keep this dual meaning any more. Therefore, "n" has been restricted to the former, whereas a new member, called "nfiles", has been introduced for the latter.
* http.c: Use BUFSIZ instead of arbitrary valueXavier Del Campo Romero2023-09-071-1/+1
| | | | | | | | | | | | | | According to C99 7.19.1p3: BUFSIZ is a macro that expands to an integer constant expression that is the size of the buffer used by the setbuf function. In other words, this means BUFSIZ is the most optimal length for a buffer that reads a file into memory in chunks using fread(3). Note: the number of bytes sent to the client might be less than BUFSIZ, so this would act as a bottleneck, no matter how large the buffer passed to fread(3) is.
* handler: Define port as unsigned shortXavier Del Campo Romero2023-09-072-2/+2
| | | | | Port numbers are unsigned by definition. Fortunately, this was a minor issues since server_init was doing an implicit cast to unsigned short.
* hello/main.c: Add missing length callbackXavier Del Campo Romero2023-09-071-1/+17
| | | | | Even if the feature is unsupported by the application, slweb requires `length` to be a valid function pointer.
* http.c: Return error if check_length failsXavier Del Campo Romero2023-09-071-0/+7
| | | | | Otherwise, fatal errors coming from the h->cfg.length would be unnoticed, causing slweb to attempt to send a response.
* http.c: Merge payload_{get,post} into process_payloadXavier Del Campo Romero2023-08-131-17/+3
| | | | | Both functions were in fact identical, so there was no reason to keep two definitions rather than one.
* Add hello world exampleXavier Del Campo Romero2023-08-099-0/+191
|
* README.md: Add missing CMake build stepXavier Del Campo Romero2023-08-091-0/+1
|
* html.c: Fix wrong encoding for '>' and '<'Xavier Del Campo Romero2023-08-081-2/+2
|
* Bump dynstrXavier Del Campo Romero2023-08-021-0/+0
|
* http.c: Remove useless explicit castXavier Del Campo Romero2023-08-011-1/+1
|
* Do some minor rebrandingXavier Del Campo Romero2023-08-011-7/+7
| | | | | | Despite designed around portability and minimalism, I feel slweb no longer aligns with the philosophical views from the suckless project. Therefore, I think it was appropriate to unlink its branding from it.
* Bump dynstrXavier Del Campo Romero2023-08-011-0/+0
| | | | A recent commit introduced a "clean" target to its Makefile.
* html.c: Make serialize_node staticXavier Del Campo Romero2023-07-281-2/+2
|
* Move dynstr to new URLXavier Del Campo Romero2023-07-282-2/+2
|
* README.md: Provide more details about featuresXavier Del Campo Romero2023-07-281-0/+22
|
* Move header files to subdirectoryXavier Del Campo Romero2023-07-2110-9/+9
| | | | | | | | | | | Since slweb is meant as a library, it is advisable to keep public header files under their own directory in order to avoid name clashing i.e., #include "something.h" Now becomes: #include "slweb/something.h"
* Makefile: Adapt to slwebXavier Del Campo Romero2023-07-211-19/+5
| | | | | | This project was forked off slcl, a "suckless" cloud solution, so that its HTTP/1.1 server implementation could be reused by other applications.