Skip to content

Commit 04ef08d

Browse files
committed
doh添加超时选项
1 parent f824ebf commit 04ef08d

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ http3反向代理服务器实验golang
3030

3131
实现了通过A,AAAA,HTTPS,CNAME记录解析域名的功能
3232

33-
优化了负载均衡器的更多配置选项和测试
33+
优化了负载均衡器的更多配置选项和测试,可选负载均衡算法和服务器被动健康检查和主动健康检查的开关,以及可自定义的故障转移重试条件.
3434

3535
#### 安装教程
3636

dns/dns.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
// "time"
66
"context"
77
"errors"
8+
"time"
89

910
print_experiment "github.com/masx200/http3-reverse-proxy-server-experiment/print"
1011
doq "github.com/tantalor93/doq-go/doq"
@@ -106,15 +107,19 @@ func setPortIfMissing(rawURL string) (string, error) {
106107
// r: 代表DNS应答消息的dns.Msg对象。
107108
// err: 如果过程中发生错误,则返回错误信息。
108109
func DohClient(msg *dns.Msg, dohServerURL string) (r *dns.Msg, err error) {
110+
var ctx, cancel = context.WithTimeout(context.Background(), 10*time.Second)
111+
defer cancel()
109112
/* 为了doh的缓存,需要设置id为0 ,可以缓存*/
110113
msg.Id = 0
111114
body, err := msg.Pack()
112115
if err != nil {
113116
log.Println(dohServerURL, err)
114117
return nil, err
115118
}
119+
req, err := http.NewRequestWithContext(ctx, "POST", dohServerURL, strings.NewReader(string(body)))
120+
req.Header.Set("Content-Type", "application/dns-message")
116121
//http request doh
117-
res, err := http.Post(dohServerURL, "application/dns-message", strings.NewReader(string(body)))
122+
res, err := http.DefaultClient.Do(req) //Post(dohServerURL, "application/dns-message", strings.NewReader(string(body)))
118123
if err != nil {
119124
log.Println(dohServerURL, err)
120125
return nil, err

h3/h3.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"net/http"
1111
"strings"
1212
"sync"
13+
"time"
1314

1415
"github.com/masx200/http3-reverse-proxy-server-experiment/adapter"
1516
"github.com/miekg/dns"
@@ -165,6 +166,8 @@ func CreateHTTP3TransportWithIPGetter(getter func() (string, error)) adapter.HTT
165166
// r: 代表DNS应答消息的dns.Msg对象。
166167
// err: 如果过程中发生错误,则返回错误信息。
167168
func DoHTTP3Client(msg *dns.Msg, dohttp3ServerURL string) (r *dns.Msg, err error) {
169+
var ctx, cancel = context.WithTimeout(context.Background(), 10*time.Second)
170+
defer cancel()
168171
/* 为了doh的缓存,需要设置id为0 ,可以缓存*/
169172
msg.Id = 0
170173
client := &http.Client{
@@ -175,8 +178,10 @@ func DoHTTP3Client(msg *dns.Msg, dohttp3ServerURL string) (r *dns.Msg, err error
175178
log.Println(dohttp3ServerURL, err)
176179
return nil, err
177180
}
181+
req, err := http.NewRequestWithContext(ctx, "POST", dohttp3ServerURL, strings.NewReader(string(body)))
182+
req.Header.Set("Content-Type", "application/dns-message")
178183
//http request doh
179-
res, err := client.Post(dohttp3ServerURL, "application/dns-message", strings.NewReader(string(body)))
184+
res, err := client.Do(req) //Post(dohttp3ServerURL, "application/dns-message", strings.NewReader(string(body)))
180185
if err != nil {
181186
log.Println(dohttp3ServerURL, err)
182187
return nil, err

0 commit comments

Comments
 (0)