<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cfws, branch master</title>
<subtitle>A simple HTTP server specialized for local testing
</subtitle>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/'/>
<entry>
<title>Improve HTTP request parsing and pass cookies to CGI scripts</title>
<updated>2023-08-07T15:44:56+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-08-07T15:44:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=89c62ba0739421b44c2f6d54a89011d81bf9e57c'/>
<id>89c62ba0739421b44c2f6d54a89011d81bf9e57c</id>
<content type='text'>
The HTTP request parser has been mostly rewritten, and now it is able to
parse header lines. This makes it possible to get the cookie string from
the request and pass it to CGI scripts, which was needed for the cflip
forum to retain login status.

It is now possible to run the forum through cfws, log in and submit
threads and posts!
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The HTTP request parser has been mostly rewritten, and now it is able to
parse header lines. This makes it possible to get the cookie string from
the request and pass it to CGI scripts, which was needed for the cflip
forum to retain login status.

It is now possible to run the forum through cfws, log in and submit
threads and posts!
</pre>
</div>
</content>
</entry>
<entry>
<title>Run executable files as CGI scripts</title>
<updated>2023-07-15T01:16:02+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-07-15T01:16:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=555f21649b909fd37a6153843249d72ca80ac427'/>
<id>555f21649b909fd37a6153843249d72ca80ac427</id>
<content type='text'>
Now if the server encounters an executable file that doesn't have a .php
extension, it will run it as a CGI script. There should maybe be better
heuristics for determining whether a file actually is a CGI script
(sometimes files copied from Windows can be marked as executable) but
this works for now.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now if the server encounters an executable file that doesn't have a .php
extension, it will run it as a CGI script. There should maybe be better
heuristics for determining whether a file actually is a CGI script
(sometimes files copied from Windows can be marked as executable) but
this works for now.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add verbose flag and command line help message</title>
<updated>2023-07-15T01:00:22+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-07-15T01:00:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=8ddca3948791d484614f1b2a753f04c478072050'/>
<id>8ddca3948791d484614f1b2a753f04c478072050</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Gracefully shut down server when interrupted with Ctrl+C</title>
<updated>2023-07-09T17:57:13+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-07-09T17:57:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=c446378817e4d215ffd69f452f846fc5278f7943'/>
<id>c446378817e4d215ffd69f452f846fc5278f7943</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Check file extension for NULL</title>
<updated>2023-06-08T21:51:42+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-06-08T21:51:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=b67db2af4c3fd5bc8c612c6348c78323f5bf4b48'/>
<id>b67db2af4c3fd5bc8c612c6348c78323f5bf4b48</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Support multiple index file names (such as index.php)</title>
<updated>2023-06-08T21:09:45+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-06-08T21:09:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=33657410d794112aebbf0e3c3b2f8a9bccc64bf9'/>
<id>33657410d794112aebbf0e3c3b2f8a9bccc64bf9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Support POST requests for PHP scripts</title>
<updated>2023-06-08T20:49:46+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-06-08T20:49:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=442cf41129d516188f52050c48f806b24450a3a3'/>
<id>442cf41129d516188f52050c48f806b24450a3a3</id>
<content type='text'>
This makes it possible to both read from and write to the standard I/O
in php-cgi so that the request body can be written to its stdin and the
script can access POST request data.

Unfortunately, this isn't quite enough for the user login on the cflip
forum to work, since cookies (and other HTTP headers) aren't passed to
the script yet.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes it possible to both read from and write to the standard I/O
in php-cgi so that the request body can be written to its stdin and the
script can access POST request data.

Unfortunately, this isn't quite enough for the user login on the cflip
forum to work, since cookies (and other HTTP headers) aren't passed to
the script yet.
</pre>
</div>
</content>
</entry>
<entry>
<title>Parse HTTP POST requests and request body</title>
<updated>2023-06-08T20:49:35+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-06-08T20:49:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=8724eb379bcda51e7a9ecaaa6698a699ac042621'/>
<id>8724eb379bcda51e7a9ecaaa6698a699ac042621</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Unset QUERY_STRING environment variable after running CGI script</title>
<updated>2023-06-08T19:11:42+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-06-08T19:11:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=eb7a9ca573c24f09d3cc2d3485af848c914aedac'/>
<id>eb7a9ca573c24f09d3cc2d3485af848c914aedac</id>
<content type='text'>
This prevents an issue where the previous query string would persist on
requests without a query string.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This prevents an issue where the previous query string would persist on
requests without a query string.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ignore SIGPIPE signals when writing to a closed socket</title>
<updated>2023-06-06T23:23:50+00:00</updated>
<author>
<name>cflip</name>
<email>cflip@cflip.net</email>
</author>
<published>2023-06-06T23:23:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cflip.net/cfws/commit/?id=c90a2f7a68e3d1054bceed8b67acb7bd0af8d14f'/>
<id>c90a2f7a68e3d1054bceed8b67acb7bd0af8d14f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
