]> Sergey Matveev's repositories - btrtrc.git/blobdiff - webtorrent/tracker-client.go
Add customer headers when dialling WS connection to tracker (#789)
[btrtrc.git] / webtorrent / tracker-client.go
index 64885bf4d1fea79fe35803b6a76a9b14bb55f705..60cd852773e524c8d9d130b16c9fc5005e43c32c 100644 (file)
@@ -5,6 +5,7 @@ import (
        "crypto/rand"
        "encoding/json"
        "fmt"
+       "net/http"
        "sync"
        "time"
 
@@ -40,6 +41,8 @@ type TrackerClient struct {
        closed         bool
        stats          TrackerClientStats
        pingTicker     *time.Ticker
+
+       WebsocketTrackerHttpHeader func() http.Header
 }
 
 func (me *TrackerClient) Stats() TrackerClientStats {
@@ -86,7 +89,13 @@ func (tc *TrackerClient) doWebsocket() error {
        tc.mu.Lock()
        tc.stats.Dials++
        tc.mu.Unlock()
-       c, _, err := tc.Dialer.Dial(tc.Url, nil)
+
+       var header http.Header
+       if tc.WebsocketTrackerHttpHeader != nil {
+               header = tc.WebsocketTrackerHttpHeader()
+       }
+
+       c, _, err := tc.Dialer.Dial(tc.Url, header)
        if err != nil {
                return fmt.Errorf("dialing tracker: %w", err)
        }