Fix online-check reusing the local address

This commit is contained in:
Patrick Pacher 2020-04-09 10:58:42 +02:00
parent 47f4627f1f
commit ab233ae992
No known key found for this signature in database
GPG key ID: E8CD2DA160925A6D

View file

@ -204,6 +204,7 @@ func monitorOnlineStatus(ctx context.Context) error {
timeout := time.Minute timeout := time.Minute
if GetOnlineStatus() != StatusOnline { if GetOnlineStatus() != StatusOnline {
timeout = time.Second timeout = time.Second
log.Debugf("checking online status again in %s because current status is %s", timeout, GetOnlineStatus())
} }
// wait for trigger // wait for trigger
select { select {
@ -271,13 +272,15 @@ func checkOnlineStatus(ctx context.Context) {
// TODO: find (array of) alternatives to detectportal.firefox.com // TODO: find (array of) alternatives to detectportal.firefox.com
// TODO: find something about usage terms of detectportal.firefox.com // TODO: find something about usage terms of detectportal.firefox.com
client := &http.Client{ dialer := &net.Dialer{
Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: 5 * time.Second, Timeout: 5 * time.Second,
LocalAddr: getLocalAddr("tcp"), LocalAddr: getLocalAddr("tcp"),
DualStack: true, DualStack: true,
}).DialContext, }
client := &http.Client{
Transport: &http.Transport{
DialContext: dialer.DialContext,
DisableKeepAlives: true, DisableKeepAlives: true,
DisableCompression: true, DisableCompression: true,
WriteBufferSize: 1024, WriteBufferSize: 1024,
@ -330,6 +333,7 @@ func checkOnlineStatus(ctx context.Context) {
response.Body.Close() response.Body.Close()
// 3) try a https request // 3) try a https request
dialer.LocalAddr = getLocalAddr("tcp")
request = (&http.Request{ request = (&http.Request{
Method: "HEAD", Method: "HEAD",