--- fnord-1.12/CHANGES 2010-12-22 15:03:30.000000000 +0100 +++ fnord-1.12.1/CHANGES 2010-12-22 16:31:42.000000000 +0100 @@ -1,3 +1,7 @@ +1.12.1: + fix Content-type to be the last header tag to avoid misbehaviour of some + browsers like Firefox (maybe misbehaviour like RFC 2616 3.4.1) + 1.12: some mimetypes added redirect on requesting a directory without trailing "/" in URL --- fnord-1.12/httpd.c 2010-10-30 15:43:15.000000000 +0200 +++ fnord-1.12.1/httpd.c 2010-12-22 14:17:05.000000000 +0100 @@ -1700,11 +1700,10 @@ url=fnord; } if (rangestart || rangeend!=st.st_size) - buffer_puts(buffer_1,"HTTP/1.0 206 Partial Content\r\nServer: "FNORD"\r\nContent-Type: "); + buffer_puts(buffer_1,"HTTP/1.0 206 Partial Content"); else - buffer_puts(buffer_1,"HTTP/1.0 200 OK\r\nServer: "FNORD"\r\nContent-Type: "); - buffer_puts(buffer_1,mimetype); - buffer_puts(buffer_1,"\r\n"); + buffer_puts(buffer_1,"HTTP/1.0 200 OK"); + buffer_puts(buffer_1,"\r\nServer: "FNORD"\r\n"); #ifdef EXPIRESHEADER buffer_puts(buffer_1,"Expires: "); { @@ -1772,7 +1771,9 @@ buffer_putrange(buffer_1,st.st_size); buffer_puts(buffer_1,"\r\n"); } - buffer_puts(buffer_1,"\r\n"); + buffer_puts(buffer_1,"Content-Type: "); + buffer_puts(buffer_1,mimetype); + buffer_puts(buffer_1,"\r\n\r\n"); if (method==GET || method==POST) { switch (serve_static_data(fd)) { case 0: break;