Fix 302 bug, found another fnord bug

This commit is contained in:
Neale Pickett 2012-02-27 22:07:22 -07:00
parent f066042785
commit 669fcc25a4
3 changed files with 44 additions and 40 deletions

View File

@ -114,6 +114,9 @@ title "HTTP/1.1 default keepalive"
ls / >/dev/null
printf 'GET / HTTP/1.1\r\nHost: a\r\n\r\n') | $HTTPD 2>/dev/null | grep -c '^HTTP/' | grep -q 2 && pass || fail
# 8. Should parse "Thursday"; instead assumes all day names are 6 characters long
title "RFC 850 Date"
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Thursday, 27-Feb-30 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
cat <<EOD
-----------------------------------------

41
eris.c
View File

@ -754,30 +754,20 @@ timerfc(const char *s)
{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334},
{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}
};
unsigned sec,
min,
hour,
day,
mon,
year;
char month[3];
int c;
unsigned n;
char flag;
char state;
char isctime;
enum { D_START, D_END, D_MON, D_DAY, D_YEAR, D_HOUR, D_MIN, D_SEC };
unsigned sec = 60,
min = 60,
hour = 24,
day = 32,
mon,
year = 1969;
char month[3] = {0, 0, 0};
int c;
unsigned n = 0;
char flag = 1;
char state = D_START;
char isctime = 0;
sec = 60;
min = 60;
hour = 24;
day = 32;
year = 1969;
isctime = 0;
month[0] = 0;
state = D_START;
n = 0;
flag = 1;
do {
c = *s++;
switch (state) {
@ -1693,6 +1683,7 @@ main(int argc, char *argv[], const char *const *envp)
}
}
retcode = 0;
{
int fd;
if ((fd = doit(headerbuf, headerlen, url)) >= 0) {
@ -1774,7 +1765,7 @@ main(int argc, char *argv[], const char *const *envp)
} else {
fflush(stdout);
}
} else {
} else if (! retcode) {
retcode = 404;
}
}
@ -1796,9 +1787,9 @@ main(int argc, char *argv[], const char *const *envp)
case 416:
badrequest(416, "Requested Range Not Satisfiable", "");
case 304:
badrequest(304, "Not Changed", "");
badrequest(304, "Not Changed", NULL);
case 500:
badrequest(500, "Internal Server Error", "");
badrequest(500, "Internal Server Error", NULL);
}
return 0;
}

40
test.sh
View File

@ -5,32 +5,24 @@
: ${HTTPD_IDX:=./eris -d}
H () {
echo
echo "$@"
echo "==================================="
echo
section="$*"
printf "\n%-20s: " "$*"
}
BR () {
echo
echo "-----------------------------------"
echo
}
title() {
printf "* %-50s: " "$1"
thistest="$1"
tests=$(expr $tests + 1)
}
successes=0
pass () {
echo 'ok'
printf '.'
successes=$(expr $successes + 1)
}
failures=0
fail () {
echo 'FAIL'
printf '(%s)' "$thistest"
failures=$(expr $failures + 1)
}
@ -82,6 +74,24 @@ title "Logging /index.html"
PROTO=TCP TCPREMOTEPORT=1234 TCPREMOTEIP=10.0.0.2 $HTTPD >/dev/null) 2>&1 | grep -q '^10.0.0.2 200 6 host (null) (null) /index.html$' && pass || fail
H "If-Modified-Since"
title "Has been modified"
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Sun, 27 Feb 1980 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '200 OK' && pass || fail
title "RFC 822 Date"
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Sun, 27 Feb 2030 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
title "RFC 850 Date"
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Sunday, 27-Feb-30 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
title "RFC 850 Thursday"
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Thursday, 27-Feb-30 12:12:12 GMT\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
title "ANSI C Date"
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Sun Feb 27 12:12:12 2030\r\n\r\n' | $HTTPD 2>/dev/null | grep -q '304 Not Changed' && pass || fail
H "Directory indexing"
title "Basic index"
@ -139,8 +149,8 @@ title "HTTP/1.1 default keepalive"
ls / >/dev/null
printf 'GET / HTTP/1.1\r\nHost: a\r\n\r\n') | $HTTPD 2>/dev/null | grep -c '^HTTP/' | grep -q 2 && pass || fail
BR
echo
echo
echo "$successes of $tests tests passed ($failures failed)."
exit $failures