@@ -10,6 +10,7 @@ import (
10
10
"net/http"
11
11
"strings"
12
12
"sync"
13
+ "time"
13
14
14
15
"github.com/masx200/http3-reverse-proxy-server-experiment/adapter"
15
16
"github.com/miekg/dns"
@@ -165,6 +166,8 @@ func CreateHTTP3TransportWithIPGetter(getter func() (string, error)) adapter.HTT
165
166
// r: 代表DNS应答消息的dns.Msg对象。
166
167
// err: 如果过程中发生错误,则返回错误信息。
167
168
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 ()
168
171
/* 为了doh的缓存,需要设置id为0 ,可以缓存*/
169
172
msg .Id = 0
170
173
client := & http.Client {
@@ -175,8 +178,10 @@ func DoHTTP3Client(msg *dns.Msg, dohttp3ServerURL string) (r *dns.Msg, err error
175
178
log .Println (dohttp3ServerURL , err )
176
179
return nil , err
177
180
}
181
+ req , err := http .NewRequestWithContext (ctx , "POST" , dohttp3ServerURL , strings .NewReader (string (body )))
182
+ req .Header .Set ("Content-Type" , "application/dns-message" )
178
183
//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)))
180
185
if err != nil {
181
186
log .Println (dohttp3ServerURL , err )
182
187
return nil , err
0 commit comments