Do not reuse HTTP/3 handler, TODO investigate error 0x100 on retry
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
DataHoarder 2022-08-04 15:02:56 +02:00
parent 09c0541b9e
commit 07acd86c8e
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk

12
http.go
View file

@ -14,10 +14,6 @@ import (
const rangeReaderBufferSize = 1024 * 16 const rangeReaderBufferSize = 1024 * 16
var httpClient = http.Client{
Transport: &http3.RoundTripper{},
}
type RangeReadSeekCloser struct { type RangeReadSeekCloser struct {
uri *url.URL uri *url.URL
size int64 size int64
@ -28,6 +24,7 @@ type RangeReadSeekCloser struct {
bufferOffset int64 bufferOffset int64
closed bool closed bool
fileName string fileName string
httpClient http.Client
} }
func NewRangeReadSeekCloser(uri string) (*RangeReadSeekCloser, error) { func NewRangeReadSeekCloser(uri string) (*RangeReadSeekCloser, error) {
@ -37,6 +34,9 @@ func NewRangeReadSeekCloser(uri string) (*RangeReadSeekCloser, error) {
} }
r := &RangeReadSeekCloser{ r := &RangeReadSeekCloser{
uri: parsedUrl, uri: parsedUrl,
httpClient: http.Client{
Transport: &http3.RoundTripper{},
},
} }
if err = r.getInformation(); err != nil { if err = r.getInformation(); err != nil {
@ -62,7 +62,7 @@ func (r *RangeReadSeekCloser) retryConnect() error {
expectedLength := r.size - startOffset expectedLength := r.size - startOffset
headers.Set("Range", fmt.Sprintf("bytes=%d-", startOffset)) headers.Set("Range", fmt.Sprintf("bytes=%d-", startOffset))
response, err := httpClient.Do(&http.Request{ response, err := r.httpClient.Do(&http.Request{
Method: "GET", Method: "GET",
URL: r.uri, URL: r.uri,
Header: headers, Header: headers,
@ -212,7 +212,7 @@ func (r *RangeReadSeekCloser) GetFileName() string {
} }
func (r *RangeReadSeekCloser) getInformation() error { func (r *RangeReadSeekCloser) getInformation() error {
response, err := httpClient.Head(r.GetURI()) response, err := r.httpClient.Head(r.GetURI())
if err != nil { if err != nil {
return err return err
} }