Handling HTML5 Video for iOS and Safari clients

info+varnish at shee.org info+varnish at shee.org
Fri Sep 8 12:55:58 UTC 2017


Am 07.09.2017 um 17:35 schrieb Dridi Boukelmoune <dridi at varni.sh>:
> It might be a known bug when browsers ask for multiple ranges in a
> single request, Varnish may serve the first one, disregard the rest
> and think it is done, so that leaves the browser hanging waiting for
> the rest of the response.

Thanks to pointing to this direction. Looking into it I see following (trimmed): 

Request 1
ReqMethod      GET
ReqURL         /test.mp4
ReqHeader      range: bytes=0-1

VCL_call       HIT
RespStatus     200
RespReason     OK
RespHeader     Content-Length: 7081786
VCL_return     deliver
RespHeader     Accept-Ranges: bytes
RespHeader     Content-Range: bytes 0-1/7081786
RespStatus     206
RespReason     Partial Content
RespUnset      Content-Length: 7081786
RespHeader     Content-Length: 2


Request 2
ReqMethod      GET
ReqURL         /test.mp4
ReqHeader      range: bytes=65509-7081785

VCL_call       HIT
RespStatus     200
RespReason     OK
RespHeader     Content-Length: 7081786
VCL_return     deliver
RespHeader     Accept-Ranges: bytes
RespHeader     Content-Range: bytes 65509-7081785/7081786
RespStatus     206
RespReason     Partial Content
RespUnset      Content-Length: 7081786
RespHeader     Content-Length: 7016277


Seems to be mapped correctly, one range in one request. Also the response seems to be "valid" (adapted Content-Length).




> I think it you can work around that in VCL by detecting when you have
> more than one range and return a 416 response.


It seems to be related to the range handling in varnish, but the problem is not clearly right now.

Any other suggestions would be greatly appreciated.

--
Leon






More information about the varnish-misc mailing list