mirror of https://github.com/nealey/eris.git
Fix 302 bug, found another fnord bug
This commit is contained in:
parent
f066042785
commit
669fcc25a4
|
@ -114,6 +114,9 @@ title "HTTP/1.1 default keepalive"
|
||||||
ls / >/dev/null
|
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
|
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
|
cat <<EOD
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
41
eris.c
41
eris.c
|
@ -754,30 +754,20 @@ timerfc(const char *s)
|
||||||
{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334},
|
{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334},
|
||||||
{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}
|
{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 };
|
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 {
|
do {
|
||||||
c = *s++;
|
c = *s++;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
@ -1693,6 +1683,7 @@ main(int argc, char *argv[], const char *const *envp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retcode = 0;
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
if ((fd = doit(headerbuf, headerlen, url)) >= 0) {
|
if ((fd = doit(headerbuf, headerlen, url)) >= 0) {
|
||||||
|
@ -1774,7 +1765,7 @@ main(int argc, char *argv[], const char *const *envp)
|
||||||
} else {
|
} else {
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (! retcode) {
|
||||||
retcode = 404;
|
retcode = 404;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1796,9 +1787,9 @@ main(int argc, char *argv[], const char *const *envp)
|
||||||
case 416:
|
case 416:
|
||||||
badrequest(416, "Requested Range Not Satisfiable", "");
|
badrequest(416, "Requested Range Not Satisfiable", "");
|
||||||
case 304:
|
case 304:
|
||||||
badrequest(304, "Not Changed", "");
|
badrequest(304, "Not Changed", NULL);
|
||||||
case 500:
|
case 500:
|
||||||
badrequest(500, "Internal Server Error", "");
|
badrequest(500, "Internal Server Error", NULL);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
40
test.sh
40
test.sh
|
@ -5,32 +5,24 @@
|
||||||
: ${HTTPD_IDX:=./eris -d}
|
: ${HTTPD_IDX:=./eris -d}
|
||||||
|
|
||||||
H () {
|
H () {
|
||||||
echo
|
section="$*"
|
||||||
echo "$@"
|
printf "\n%-20s: " "$*"
|
||||||
echo "==================================="
|
|
||||||
echo
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BR () {
|
|
||||||
echo
|
|
||||||
echo "-----------------------------------"
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
title() {
|
title() {
|
||||||
printf "* %-50s: " "$1"
|
thistest="$1"
|
||||||
tests=$(expr $tests + 1)
|
tests=$(expr $tests + 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
successes=0
|
successes=0
|
||||||
pass () {
|
pass () {
|
||||||
echo 'ok'
|
printf '.'
|
||||||
successes=$(expr $successes + 1)
|
successes=$(expr $successes + 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
failures=0
|
failures=0
|
||||||
fail () {
|
fail () {
|
||||||
echo 'FAIL'
|
printf '(%s)' "$thistest"
|
||||||
failures=$(expr $failures + 1)
|
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
|
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"
|
H "Directory indexing"
|
||||||
|
|
||||||
title "Basic index"
|
title "Basic index"
|
||||||
|
@ -139,8 +149,8 @@ title "HTTP/1.1 default keepalive"
|
||||||
ls / >/dev/null
|
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
|
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)."
|
echo "$successes of $tests tests passed ($failures failed)."
|
||||||
|
|
||||||
exit $failures
|
exit $failures
|
||||||
|
|
Loading…
Reference in New Issue