nhttpd: fix range handling

This commit is contained in:
martii
2014-07-24 20:27:40 +02:00
committed by [CST] Focus
parent ff46970457
commit 4bf0d833cd
2 changed files with 3 additions and 2 deletions

View File

@@ -140,7 +140,8 @@ bool CWebserverResponse::SendResponse() {
// cache = false; // cache = false;
Write(Connection->HookHandler.BuildHeader(cache)); Write(Connection->HookHandler.BuildHeader(cache));
if (Connection->Method != M_HEAD) if (Connection->Method != M_HEAD)
Sendfile(Connection->Request.UrlData["url"], Connection->HookHandler.RangeStart, Connection->HookHandler.RangeEnd - Connection->HookHandler.RangeStart + 1); Sendfile(Connection->Request.UrlData["url"], Connection->HookHandler.RangeStart,
(Connection->HookHandler.RangeStart == 0 && Connection->HookHandler.RangeEnd == -1) ? -1 : Connection->HookHandler.RangeEnd - Connection->HookHandler.RangeStart + 1);
return true; return true;
} }
if (Connection->HookHandler.status == HANDLED_SENDFILE && Connection->HookHandler.httpStatus == HTTP_REQUEST_RANGE_NOT_SATISFIABLE) { if (Connection->HookHandler.status == HANDLED_SENDFILE && Connection->HookHandler.httpStatus == HTTP_REQUEST_RANGE_NOT_SATISFIABLE) {

View File

@@ -329,7 +329,7 @@ bool CySocket::SendFile(int filed, off_t start, off_t size) {
if (errno != EPIPE) if (errno != EPIPE)
perror("sendfile failed"); perror("sendfile failed");
if (errno != EINVAL) if (errno != EINVAL)
return false; return false;
break; break;
} else { } else {
BytesSend += written; BytesSend += written;