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