parent
affd0cecd1
commit
a6304285b6
@ -114,7 +114,7 @@ func ServeHTTP(w http.ResponseWriter, r *http.Request, name string, modTime time
|
|||||||
|
|
||||||
// 使用请求的Context
|
// 使用请求的Context
|
||||||
// 不然从sendContent读不到数据,即使请求断开CopyBuffer也会一直堵塞
|
// 不然从sendContent读不到数据,即使请求断开CopyBuffer也会一直堵塞
|
||||||
ctx := context.WithValue(r.Context(), "request_header", &r.Header)
|
ctx := context.WithValue(r.Context(), "request_header", r.Header)
|
||||||
switch {
|
switch {
|
||||||
case len(ranges) == 0:
|
case len(ranges) == 0:
|
||||||
reader, err := RangeReadCloser.RangeRead(ctx, http_range.Range{Length: -1})
|
reader, err := RangeReadCloser.RangeRead(ctx, http_range.Range{Length: -1})
|
||||||
|
@ -19,11 +19,7 @@ func GetRangeReadCloserFromLink(size int64, link *model.Link) (model.RangeReadCl
|
|||||||
}
|
}
|
||||||
rangeReaderFunc := func(ctx context.Context, r http_range.Range) (io.ReadCloser, error) {
|
rangeReaderFunc := func(ctx context.Context, r http_range.Range) (io.ReadCloser, error) {
|
||||||
if link.Concurrency != 0 || link.PartSize != 0 {
|
if link.Concurrency != 0 || link.PartSize != 0 {
|
||||||
requestHeader := ctx.Value("request_header")
|
header := net.ProcessHeader(nil, link.Header)
|
||||||
if requestHeader == nil {
|
|
||||||
requestHeader = &http.Header{}
|
|
||||||
}
|
|
||||||
header := net.ProcessHeader(*(requestHeader.(*http.Header)), link.Header)
|
|
||||||
down := net.NewDownloader(func(d *net.Downloader) {
|
down := net.NewDownloader(func(d *net.Downloader) {
|
||||||
d.Concurrency = link.Concurrency
|
d.Concurrency = link.Concurrency
|
||||||
d.PartSize = link.PartSize
|
d.PartSize = link.PartSize
|
||||||
@ -64,11 +60,7 @@ func GetRangeReadCloserFromLink(size int64, link *model.Link) (model.RangeReadCl
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RequestRangedHttp(ctx context.Context, link *model.Link, offset, length int64) (*http.Response, error) {
|
func RequestRangedHttp(ctx context.Context, link *model.Link, offset, length int64) (*http.Response, error) {
|
||||||
requestHeader := ctx.Value("request_header")
|
header := net.ProcessHeader(nil, link.Header)
|
||||||
if requestHeader == nil {
|
|
||||||
requestHeader = &http.Header{}
|
|
||||||
}
|
|
||||||
header := net.ProcessHeader(*(requestHeader.(*http.Header)), link.Header)
|
|
||||||
header = http_range.ApplyRangeToHttpHeader(http_range.Range{Start: offset, Length: length}, header)
|
header = http_range.ApplyRangeToHttpHeader(http_range.Range{Start: offset, Length: length}, header)
|
||||||
|
|
||||||
return net.RequestHttp(ctx, "GET", header, link.URL)
|
return net.RequestHttp(ctx, "GET", header, link.URL)
|
||||||
|
@ -50,9 +50,9 @@ func Proxy(w http.ResponseWriter, r *http.Request, link *model.Link, file model.
|
|||||||
rangeReader := func(ctx context.Context, httpRange http_range.Range) (io.ReadCloser, error) {
|
rangeReader := func(ctx context.Context, httpRange http_range.Range) (io.ReadCloser, error) {
|
||||||
requestHeader := ctx.Value("request_header")
|
requestHeader := ctx.Value("request_header")
|
||||||
if requestHeader == nil {
|
if requestHeader == nil {
|
||||||
requestHeader = &http.Header{}
|
requestHeader = http.Header{}
|
||||||
}
|
}
|
||||||
header := net.ProcessHeader(*(requestHeader.(*http.Header)), link.Header)
|
header := net.ProcessHeader(requestHeader.(http.Header), link.Header)
|
||||||
down := net.NewDownloader(func(d *net.Downloader) {
|
down := net.NewDownloader(func(d *net.Downloader) {
|
||||||
d.Concurrency = link.Concurrency
|
d.Concurrency = link.Concurrency
|
||||||
d.PartSize = link.PartSize
|
d.PartSize = link.PartSize
|
||||||
|
Loading…
x
Reference in New Issue
Block a user