Create new client per-request
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
DataHoarder 2022-08-18 10:28:46 +02:00
parent 606b43e1c5
commit 78377bc860
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk

18
http.go
View file

@ -24,7 +24,6 @@ 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) {
@ -34,9 +33,6 @@ 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 {
@ -50,6 +46,16 @@ func (r *RangeReadSeekCloser) GetURI() string {
return r.uri.String() return r.uri.String()
} }
func (r *RangeReadSeekCloser) getClient() *http.Client {
return &http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
req.Header.Del("referer")
return nil
},
Transport: &http3.RoundTripper{},
}
}
func (r *RangeReadSeekCloser) retryConnect() error { func (r *RangeReadSeekCloser) retryConnect() error {
r.bodyLock.Lock() r.bodyLock.Lock()
defer r.bodyLock.Unlock() defer r.bodyLock.Unlock()
@ -62,7 +68,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 := r.httpClient.Do(&http.Request{ response, err := r.getClient().Do(&http.Request{
Method: "GET", Method: "GET",
URL: r.uri, URL: r.uri,
Header: headers, Header: headers,
@ -212,7 +218,7 @@ func (r *RangeReadSeekCloser) GetFileName() string {
} }
func (r *RangeReadSeekCloser) getInformation() error { func (r *RangeReadSeekCloser) getInformation() error {
response, err := r.httpClient.Head(r.GetURI()) response, err := r.getClient().Head(r.GetURI())
if err != nil { if err != nil {
return err return err
} }