Commit Graph

243 Commits

Author SHA1 Message Date
Emil Mikulic
7343ecf35f More style changes, fixed most of the compiler warnings. 2013-04-28 20:37:08 +10:00
Emil Mikulic
0442d41dab More style changes, move a function. 2013-04-28 20:37:08 +10:00
Emil Mikulic
775cd3ad9b Mostly style changes. 2013-04-28 20:37:01 +10:00
Emil Mikulic
1fa02dc545 Restyle and add printflike. 2013-04-28 20:36:56 +10:00
Emil Mikulic
8d11e14d11 Bump copyright year. 2013-04-28 20:34:03 +10:00
Emil Mikulic
8393796097 More inttype tweaks. 2013-04-28 20:33:20 +10:00
Emil Mikulic
bc692bb5f7 Casts and indents. 2013-04-28 20:33:14 +10:00
Emil Mikulic
7c65160849 Cosmetics. 2013-04-28 20:33:14 +10:00
Emil Mikulic
ec246e2a51 Avoid infinite loop (and quiet gcc warning) 2013-04-28 20:33:14 +10:00
Emil Mikulic
803655dba9 Ranges work now. 2013-04-28 20:33:14 +10:00
Emil Mikulic
41f4ec2d50 Should these be unsigned? 2013-04-28 20:33:13 +10:00
Emil Mikulic
3cc77c31d6 More longlong fixes. 2013-04-28 20:33:07 +10:00
Emil Mikulic
63bdabd79f Working on large file support. 2011-01-15 14:37:56 +11:00
Emil Mikulic
1cd7fd3cda Tidy up Makefile. 2011-01-15 14:37:56 +11:00
Emil Mikulic
0ab76c953b Move trunk/ into base dir, move tests into devel/. 2013-04-28 20:44:06 +10:00
Emil Mikulic
7c4a9ffade [ darkhttpd-1.7 release ] 2013-04-28 20:20:29 +10:00
Emil Mikulic
45912c373b Fix off-by-one. 2013-04-28 20:20:29 +10:00
Emil Mikulic
8eec408691 Don't use strlen() in urlencode_filename()
Also move safe_url variable into for loop that uses it.
2013-04-28 20:20:29 +10:00
Emil Mikulic
ca6a07f714 is_bad_char -> needs_urlencoding, whitespace fixes. 2013-04-28 20:20:29 +10:00
Emil Mikulic
b02c1bba08 urlencode file names when generating directory listing.
Noticed by, patched by: nf
2013-04-28 20:20:29 +10:00
Emil Mikulic
3e2e53a33e [ darkhttpd-1.6 release ]
Update copyright years.
2013-04-28 20:20:29 +10:00
Emil Mikulic
b70dcdfab6 Ubuntu hides uname somewhere else. Don't use a full path. 2013-04-28 20:20:29 +10:00
Emil Mikulic
820b5c2e3b Five-letter patch that fixes a use-after-free and possible list
corruption.  Don't know how far back this bug goes.  Caught and
diagnosed on an Ubuntu system where it manifested as a segfault.
2013-04-28 20:20:29 +10:00
Emil Mikulic
f5c051aad5 [ darkhttpd-1.5 release ]
(we skipped 1.4 due to a release engineering oversight)

Update README to reflect Makefile changes.
2013-04-28 20:20:06 +10:00
Emil Mikulic
1a161a47ce Simplify the Makefile. 2013-04-28 19:56:51 +10:00
Emil Mikulic
4cddcf96a5 Not sure if we were taking the size of the right thing previously.
Zero out the sockaddr_in before having accept() write to it.
This un-confuses bcheck on Solaris, at least.
2013-04-28 19:56:51 +10:00
Emil Mikulic
0819e7c3c6 Revert - don't bother with tzset. 2013-04-28 19:56:51 +10:00
Emil Mikulic
cfcbdf0ad7 Stuff to do when I find the time. 2013-04-28 19:56:51 +10:00
Emil Mikulic
6690b3c7cf If sendfile blocks and sends zero bytes, treat it as blocking and not
end-of-file.  This is a really rare corner case.
2013-04-28 19:56:51 +10:00
Emil Mikulic
c23550f165 Cache time and update it once per event loop iteration.
This cuts down the number of gettimeofday() calls for a single request
from 5 to 1.
2013-04-28 19:56:51 +10:00
Emil Mikulic
400ee17051 Slightly re-arrange the way recycling of keep-alive connections is
handled.  Unfortunately, I'm still seeing horrible performance.
2013-04-28 19:56:51 +10:00
Emil Mikulic
29cbe09d4c Minor tweaks. 2013-04-28 19:56:51 +10:00
Emil Mikulic
3e96ddf6d6 Implement disabling TCP_NODELAY, but comment it out.
It makes performance worse.
2013-04-28 19:56:51 +10:00
Emil Mikulic
008f6f5d4e We can handle a request from accept() to close() without having to go through a
single iteration of the select() loop.

This commit re-orders the way state == DONE is handled so that keep-alive
connections can go straight back into recv_request without visiting select().
Unfortunately, this doesn't fix the keep-alive performance.
2013-04-28 19:56:51 +10:00
Emil Mikulic
5ab0496a9b Call tzset() during initialization.
truss output suggests this isn't enough to load posixrules (UTC leap
seconds data) which happens only after the first request.  =(
2013-04-28 19:56:51 +10:00
Emil Mikulic
3ed2762831 Another state transition optimization:
Go from send_header straight to send_reply.
2013-04-28 19:56:51 +10:00
Emil Mikulic
844dcc6b9d Another state transition optimization due to NBIO:
Go from recv_request to send_header without visiting select()
2013-04-28 19:56:51 +10:00
Emil Mikulic
ba91f1cdb3 After accepting a connection, attempt a read straight away instead of
going through an iteration of the select() loop.
2013-04-28 19:56:50 +10:00
Emil Mikulic
f3ce5d1eb9 Don't just SETFL O_NONBLOCK, first GETFL. 2013-04-28 19:56:50 +10:00
Emil Mikulic
b86889f027 %Z gives UTC. Apache uses GMT instead, and wget complains about an
invalid header when it sees UTC, so switch.
2013-04-28 19:56:50 +10:00
Emil Mikulic
14d0ca9ac7 Get the constness right. 2013-04-28 19:56:50 +10:00
Emil Mikulic
625dc5e473 - In decode_url()
- Use '\0' instead of 0 to hint that it's in a character context.
  - Don't realloc - this wastes more time than it saves memory.
- Don't forget to free decoded url if it's found to be unsafe!
2013-04-28 19:56:50 +10:00
Emil Mikulic
ccea5116b5 Restore a check I shouldn't have removed.
We now pass all our tests again.
2013-04-28 19:56:50 +10:00
Emil Mikulic
4b90b875c6 Adapt make_safe_uri() to work in-place.
We're currently failing some tests.
2013-04-28 19:56:50 +10:00
Emil Mikulic
97ce3cb5d0 Turn up the debugging and warnflags. 2013-04-28 19:56:50 +10:00
Emil Mikulic
dc63087421 Test for consolidate_slashes() too. 2013-04-28 19:56:50 +10:00
Emil Mikulic
d7707a9216 Remember to free memory. 2013-04-28 19:56:50 +10:00
Emil Mikulic
a0afb2cc8b Add tests for make_safe_uri. 2013-04-28 19:56:50 +10:00
Emil Mikulic
e6c8b820fd Rename warnflags to debug-build and add debugging and torture defines. 2013-04-28 19:56:50 +10:00
Emil Mikulic
6d24c697b1 Request a bigger file -> more testing. 2013-04-28 19:56:50 +10:00