<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/libweb, branch v0.5.0</title>
<subtitle>Small and lightweight web framework written in C99 and POSIX.1-2008.
</subtitle>
<id>https://gitea.privatedns.org/xavi/libweb/atom?h=v0.5.0</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/libweb/atom?h=v0.5.0'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/'/>
<updated>2025-10-09T09:28:59+00:00</updated>
<entry>
<title>Add man3 pages for the form API</title>
<updated>2025-10-09T09:28:59+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-09T09:18:03+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=de7f4b2ffcd92dfeada9235ce857b801a4851da7'/>
<id>urn:sha1:de7f4b2ffcd92dfeada9235ce857b801a4851da7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Free chunk/step user data on context free</title>
<updated>2025-10-07T23:57:42+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-07T23:51:15+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=e85d90fbf37cbd5a3264a2debd9b51438836c729'/>
<id>urn:sha1:e85d90fbf37cbd5a3264a2debd9b51438836c729</id>
<content type='text'>
So far, users had no way to free user-defined data allocated inside the
chunk/step function pointers whenever an error occurred.

Now, the free callback can be also used in conjunction with chunk/step,
so that user-defined data is now deallocated when the operation
finishes (in the case of chunk-encoded data) or an error occurs.
</content>
</entry>
<entry>
<title>libweb_http.7: Remove obsolete information</title>
<updated>2025-10-07T23:57:42+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-07T21:33:20+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=594917d7b2170f7e946e2cc7e9c5de3f6e4775be'/>
<id>urn:sha1:594917d7b2170f7e946e2cc7e9c5de3f6e4775be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement HTTP chunk encoding</title>
<updated>2025-10-07T23:57:42+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-06T21:01:42+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=e77bd93693a74ce872d4c13fb45537c34518d84f'/>
<id>urn:sha1:e77bd93693a74ce872d4c13fb45537c34518d84f</id>
<content type='text'>
A new function pointer, namely chunk, has been added to struct
http_response so that library users can generate their message bodies
dynamically.
</content>
</entry>
<entry>
<title>Allow custom backlog connections</title>
<updated>2025-10-06T19:03:59+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-06T19:03:59+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=db9cb051c4ee05c07ab32dfed5bae8b7dc0916bd'/>
<id>urn:sha1:db9cb051c4ee05c07ab32dfed5bae8b7dc0916bd</id>
<content type='text'>
libweb calls listen(2) when setting up the HTTP server, and its backlog
argument was hardcoded to 10. While probably not an issue for some
applications, it can be too limiting for some others.

Therefore, it is desirable to allow library users to set up their own
limits. Otherwise, 10 is still chosen as a sane default.
</content>
</entry>
<entry>
<title>libweb_http.7: Add note about HTTP responses</title>
<updated>2025-10-06T14:27:21+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-06T14:27:21+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=4918cf87d3cf5d3dd8425fe10d97a06282472df6'/>
<id>urn:sha1:4918cf87d3cf5d3dd8425fe10d97a06282472df6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix design issues with async responses, add async example</title>
<updated>2025-10-06T13:51:00+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-05T23:23:20+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=3e4c7c993bbbe2bdeb563fa888b900d01c4be4a1'/>
<id>urn:sha1:3e4c7c993bbbe2bdeb563fa888b900d01c4be4a1</id>
<content type='text'>
struct http_response did not provide users any void * that could be used
to maintain a state between calls to an asynchronous HTTP response.
On the other hand, the user pointer could not be used for this purpose,
since it is shared among all HTTP clients for a given struct handler
instance.

Moreover, the length callback was still not supporting this feature,
which in fact might be required by some users. Implementing this was
particularly challenging, as this broke the current assumption that
all bytes on a call to http_read were being processed.

Now, since a client request can only be partially processed because of
the length callback, http_read must take this into account so that the
remaining bytes are still available for future calls, before reading
again from the file descriptor.
</content>
</entry>
<entry>
<title>Implement form interface</title>
<updated>2025-10-02T13:52:14+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-09-30T21:50:33+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=a0f5f7509bb9040752fa61fe0fdb447608e22b1c'/>
<id>urn:sha1:a0f5f7509bb9040752fa61fe0fdb447608e22b1c</id>
<content type='text'>
This new interface allows library users to parse
application/x-www-form-urlencoded data conveniently.
</content>
</entry>
<entry>
<title>examples: Add distclean target</title>
<updated>2025-10-02T13:48:04+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-02T13:40:03+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=bba0b62f4e9e17927b9a2cda51dd5a4aa1b1f14e'/>
<id>urn:sha1:bba0b62f4e9e17927b9a2cda51dd5a4aa1b1f14e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>examples/Makefile: Increase flexibility</title>
<updated>2025-10-02T13:48:04+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-02T13:44:30+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=9be656dfed53783036c7ae1edae04060b451d6df'/>
<id>urn:sha1:9be656dfed53783036c7ae1edae04060b451d6df</id>
<content type='text'>
The former implementation required redundant code for every new
directory.
</content>
</entry>
</feed>
