<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/libweb, branch v0.2.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.2.0</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/libweb/atom?h=v0.2.0'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/'/>
<updated>2024-02-12T22:12:43+00:00</updated>
<entry>
<title>Bump version to 0.2.0</title>
<updated>2024-02-12T22:12:43+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-02-12T20:21:57+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=6ceae16a20175edb77fb2ffab0d3d6648d011221'/>
<id>urn:sha1:6ceae16a20175edb77fb2ffab0d3d6648d011221</id>
<content type='text'>
</content>
</entry>
<entry>
<title>README.md: Update according to status quo</title>
<updated>2024-02-12T22:12:43+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-02-12T22:11:36+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=46a9d4efb9acf3c1ac73fd13bcdbdbc23323e75f'/>
<id>urn:sha1:46a9d4efb9acf3c1ac73fd13bcdbdbc23323e75f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>README.md: Fix typo</title>
<updated>2024-02-12T22:12:43+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-02-12T22:10:38+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=444563ca13a51069141d27f6f6f4b898d577193e'/>
<id>urn:sha1:444563ca13a51069141d27f6f6f4b898d577193e</id>
<content type='text'>
Whereas the project is usually referred to as libweb, the CMake exported
target name is simply "web".
</content>
</entry>
<entry>
<title>README.md: Add Alpine Linux build instructions</title>
<updated>2024-02-12T22:12:42+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-02-12T22:10:02+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=dd1589a5ea5e8a244cfa51e19137a6ccb7ccb225'/>
<id>urn:sha1:dd1589a5ea5e8a244cfa51e19137a6ccb7ccb225</id>
<content type='text'>
</content>
</entry>
<entry>
<title>libweb_http.7: Update according to status quo</title>
<updated>2024-02-12T22:00:03+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-02-12T21:44:47+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=edc855f93b10aebc7afc71749ba2e86c73b1b77c'/>
<id>urn:sha1:edc855f93b10aebc7afc71749ba2e86c73b1b77c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>libweb_html.7: Fix typo</title>
<updated>2024-02-12T21:52:18+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-02-12T21:52:12+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=f9a305fe4d71d5940184d8ca850241558b36c315'/>
<id>urn:sha1:f9a305fe4d71d5940184d8ca850241558b36c315</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update copyright notices to 2024</title>
<updated>2024-02-12T21:45:17+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-02-12T21:16:35+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=fcba916011f8fe21e60df1e0302371fc3956126f'/>
<id>urn:sha1:fcba916011f8fe21e60df1e0302371fc3956126f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>server.c: Fix wrong priority for do_exit</title>
<updated>2024-01-20T00:19:57+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-01-20T00:09:18+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=91ff743df9fcee048cb44dba0c7047df04454dd2'/>
<id>urn:sha1:91ff743df9fcee048cb44dba0c7047df04454dd2</id>
<content type='text'>
Under some specific circumstances, poll(2) would return a positive
integer, but do_exit might had been previously set. This caused libweb
to ignore SIGTERM, with the potential risk for an endless loop.
</content>
</entry>
<entry>
<title>http.c: Solve performance issues on POST uploads</title>
<updated>2024-01-20T00:19:57+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2024-01-20T00:05:05+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=43be8d95f681c8240847b4f69a524a0ab20d5c83'/>
<id>urn:sha1:43be8d95f681c8240847b4f69a524a0ab20d5c83</id>
<content type='text'>
Profiling showed that reading multipart/form POST uploads byte-by-byte
was too slow and typically led to maximum CPU usage. Therefore, the
older approach (as done up to commit 7efc2b3a) was more efficient, even
if the resulting code was a bit uglier.
</content>
</entry>
<entry>
<title>http.c: Unify read operations</title>
<updated>2023-11-24T00:36:38+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2023-11-23T23:52:50+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/libweb/commit/?id=b0accd099fa8c5110d4c3c68830ad6fd810ca3ec'/>
<id>urn:sha1:b0accd099fa8c5110d4c3c68830ad6fd810ca3ec</id>
<content type='text'>
So far, libweb would perform different read operations depending on its
state:

- For HTTP headers or request bodies, one byte at a time was read.
- For multipart/form-data, up to BUFSIZ bytes at a time were read.

However, this caused a significant extra number of syscalls for no
reason and would increase code complexity, specially when parsing
multiform/form-data boundaries.

Now, http_read always reads up to BUFSIZ bytes at a time and process
them on a loop. Apart from reducing code complexity, this should
increase performance due to the (much) lower number of syscalls
required.
</content>
</entry>
</feed>
