http://nginx.org/en/docs/http/ngx_http_slice_module.html
//设置返回头相关字段
r->headers_out.status = NGX_HTTP_OK;
r->headers_out.status_line.len = 0;
r->headers_out.content_length_n = cr.complete_length;
r->headers_out.content_offset = cr.start;
r->headers_out.content_range->hash = 0;
r->headers_out.content_range = NULL;
r->allow_ranges = 1;
r->subrequest_ranges = 1;
r->single_range = 1;
rc = ngx_http_next_header_filter(r);
//
// 就这里没明白,执行过滤链之后,
// headers_out的status,content_length_n,content_offset都是按照什么逻辑变化的,上面subrequest_ranges起到什么作用
// 另外第一次返回终端HTTP头信息是在哪里执行的,请求的时候Range:bytes=Range_A1-Range_B1,返回的时候Content-Range:bytes Range_A2-Range_B2/complete_length
// 这个Range_B是什么时候计算出来返回给终端的,原则上Range_A1=Range_A2,Range_B1=Range_B2
//
//这行也不明白什麽意思,是指的缓冲数据没发送完成,要一直等到缓存发送完么?
if (r->buffered) {
return rc;
}
if (ngx_http_subrequest(r, &r->uri, &r->args, &sr, NULL, 0) != NGX_OK) {
return NGX_ERROR;
}
Attachment:
ngx_http_slice_filter_module.c
Description: Binary data