Changelog for zjhttpd
===================


2003-09-07

The config file parsing is done, the files are created (README, CHANGES
and the like), nothing interessing happened.


2003-09-26

The request-stuff is done, but only for the first line. It is parsed
into path, host, port and uri_data, so httpd will be able to deal with
stuff like "http://www.foo.bar:8080/gnarf" as URI. Note that this isn't
usual, because in the GET request most often only the path is provided.
RFC2616 tells us, that the user MAY put the whole URI there, so it is a
good idea to be able to understand it.

The code is still good commented and clean. I used enums and defines
wherever it was possible. The parsing functions return as error code the
appropriate HTTP-error-code (should be better for logging, that was a
problem in Smeagol when I tried to implement the w3c-standard for
logfiles). There are new DEBUG functions, but in print_out_request there
is currently no special code, it's marked as TODO. I noticed that it is
difficult to be concentrated for more than 2,5 hours, so I will take a
pause in order to avoid slips of the pen.


2003-09-27

The request-stuff is finished for now (I will add the password-stuff
later, I think), but not tested. The debug function prints out the stuff
from the request-struct, ready for testing everything. I have to add a
function that cleans up after processing the request, since we have a
loop that may run a long time and the request-stuff uses heavily
strdup(3) und *alloc(3).


2003-09-28

Wow, it's getting useable ;-)
I've added a bit to the request-stuff (Host: is now parsed into host and
port), the command line arguments are now complete, the conf-file
parsing works AND it sets the values (I wonder why I forget to set
them). The sanity checks are done (Host for HTTP/1.1, Keep-Alive per
default on, etc.), but I think there is something missing. The
freeing-stuff is done, all the strdups and *allocs (for the ranges, btw.)
are freed.
I also added the send_error-functions. It is one function, that looks
whether to send HTML or plain text (depending on req->error_file_path or
something like this). There are some useful function in misc like
http_datestring(time_t) and http_serverstring(void).
I tested the parsing things a little bit (also with Opera as a
real-world-client), it still seems to work.
A TODO list is added.

2003-09-29
2003-09-30
2003-10-01
2003-10-02

Fuck, I didn't log the changes ;-)

Well, the GET now works, with the full byte ranges (what an ache!) and
boundary-stuff. Logging also works (was a little tricky to pass the sent
bytes back to the toplevel of the request-functions). Manpage is written
(on the night 2003-09-29/2003-09-30), Makefile is improved.

This reads a little shorter, but the last 3 days I added about 1500
lines of code. It's getting huge, all together about 65 KB of source.

2003-10-05

Dotfile-behaviuor fixed
Directory-Browsing support implemented
HTTP/0.9 disabled
New config items: default_ct, dotfiles, dirlisting
Memory Leak for HEAD / Ranges fixed
Future Timestamps fixed
Extended Logging enabled


2003-10-07

We now support all three timeformats

Every source file has now a comment that introduces to the file and
tells what is done there (and how). I hope this makes the things a
little bit more transparent.

The documentation has been updated and the package is prepared for
release. The only thing left is: testing, testing, testing.

I'm going to write a test suite for that purpose, and depending on
its size it may be distributed as a standalone package. This would
be useful for other developers of webservers, since they can test
their servers as well. I think I'll use perl for this, but at the
moment I'm not good in that, so the test suite may take a while.


2003-10-08

Hehe, there are some fflush(stdout) missing, added a few, I hope I
got them all. Package seems ready to be released, install and
uninstall targets are added to Makefile.


2003-11-14

http_send_error() now clears the keep-alive flag, damn, I was sure
to have already done this. It is so stupid...

Ah, the project is now renamed into zjhttpd - sorry fokls, but it
doesn't seem that I will find a better name.

*************************************
* First unofficial release: 0.1-rc1 *
*************************************


2003-11-15

Not everything was renamed from httpd to zjhttpd: several values in
zjhttpd.h (and zjhttpd.conf) haven't been changed, becuase I searched
with "grep httpd *.c | grep -v zjhttpd" and, of course, every file with
zjhttpd in the name was skipped ;-)

The real problem caused by this was, that the default config file wasn't
read and thus the server didn't behave like the user expected.

The dirlistings now display directories as "dir/", not as "dir". They
also don't show dotfiles (which does not mean that you cannot reach
them, this depends on view_dotfiles from the configuration) now.

There seem to be a problem with the Moved Permanently-messages generated
if a directory is requested without trailing slash. It doesn't occure on
my machine, but on my cousin's. Perhaps a difference in realpath(3) on
Linux?

**************************************
* Second unofficial release: 0.1-rc2 *
**************************************


2003-12-30

Fixed a possible Buffer Overflow in get_head.c, generate_chunk_header()


2004-01-03

Add an "#include <time.h>" in response.c, fixed a spelling mistake in a
comment (uuuuuh ;-))


2004-01-09

Added some failure checking in get_head.c, replaced the malloc-and-memcpy
stuff with strdup (in generate_chunk_list()).

%F replaced with %Y-%m-%d (misc.c, generate_dirlisting), because the
compiler complains about this (but it IS valid, POSIX says).


***************************************
* First official release: 0.1-RELEASE *
***************************************


