<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/libweb/examples, branch test-mf</title>
<subtitle>Small and lightweight web framework written in C99 and POSIX.1-2008.
</subtitle>
<id>https://gitea.privatedns.org/xavi/libweb/atom?h=test-mf</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/libweb/atom?h=test-mf'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/'/>
<updated>2025-10-07T23:57:42+00:00</updated>
<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>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>
<entry>
<title>Move signal handling to processes</title>
<updated>2024-08-22T00:27:34+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-08-19T22:07:05+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=43e89fb23943b5ffb6854f290592c29cd079bf46'/>
<id>urn:sha1:43e89fb23943b5ffb6854f290592c29cd079bf46</id>
<content type='text'>
So far, libweb installed a signal handler so as to handle SIGTERM,
SIGPIPE and SIGINT signals so that processes would not have to care
about such details.

However, it is not advisable for libraries to install signal handlers,
as signals are handled on a per-process basis. The previous approach
would be incompatible if several instances of the library were allocated
by the same process.

Unfortunately, this has the undesired side effect of adding the
boilerplate code into the process.
</content>
</entry>
<entry>
<title>headers/main.c: Update to new handler interface</title>
<updated>2023-11-20T16:05:21+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2023-11-20T16:05:21+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=bc1d77983acd0e5160071fb724fef90ac0f9ca37'/>
<id>urn:sha1:bc1d77983acd0e5160071fb724fef90ac0f9ca37</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add PUT server example</title>
<updated>2023-11-20T15:34:24+00:00</updated>
<author>
<name>Xavier Del Campo</name>
<email>xavier.delcampo@midokura.com</email>
</author>
<published>2023-11-17T15:34:45+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=dc8b14d99028b9235aa7d7633906a979aa08e4f9'/>
<id>urn:sha1:dc8b14d99028b9235aa7d7633906a979aa08e4f9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>examples/hello: Update according to handler_loop</title>
<updated>2023-11-20T15:06:20+00:00</updated>
<author>
<name>Xavier Del Campo</name>
<email>xavier.delcampo@midokura.com</email>
</author>
<published>2023-11-16T11:57:27+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=c9edbbc4b04ba03c3fc2c1dc7768fdfecd04fec3'/>
<id>urn:sha1:c9edbbc4b04ba03c3fc2c1dc7768fdfecd04fec3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Send HTTP headers to payload callback</title>
<updated>2023-11-18T00:03:12+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2023-11-17T23:56:04+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=65031ca3502e0c27780be847fd97c112546741a9'/>
<id>urn:sha1:65031ca3502e0c27780be847fd97c112546741a9</id>
<content type='text'>
Even if libweb already parses some common headers, such as
Content-Length, some users might find it interesting to inspect which
headers were received from a request.

Since HTTP/1.1 does not define a limit on the number of maximum headers
a client can send, for security reasons a maximum value must be provided
by the user. Any extra headers shall be then discarded by libweb.

An example application showing this new feature is also provided.
</content>
</entry>
</feed>
