Browse Source

fix protocol matching in routing (#2540)

* remove invalid http2 sniffer

* do not set metadata protocol for http inbound

http inbound may have transport settings

* fix doh metadata protocol
dyhkwong 2 years ago
parent
commit
8de2f27043
3 changed files with 5 additions and 22 deletions
  1. 1 1
      app/dns/nameserver_doh.go
  2. 3 18
      common/protocol/http/sniff.go
  3. 1 3
      proxy/http/server.go

+ 1 - 1
app/dns/nameserver_doh.go

@@ -231,7 +231,7 @@ func (s *DoHNameServer) sendQuery(ctx context.Context, domain string, clientIP n
 			}
 			}
 
 
 			dnsCtx = session.ContextWithContent(dnsCtx, &session.Content{
 			dnsCtx = session.ContextWithContent(dnsCtx, &session.Content{
-				Protocol:       "https",
+				Protocol:       "tls",
 				SkipDNSResolve: true,
 				SkipDNSResolve: true,
 			})
 			})
 
 

+ 3 - 18
common/protocol/http/sniff.go

@@ -11,25 +11,12 @@ import (
 
 
 type version byte
 type version byte
 
 
-const (
-	HTTP1 version = iota
-	HTTP2
-)
-
 type SniffHeader struct {
 type SniffHeader struct {
-	version version
-	host    string
+	host string
 }
 }
 
 
 func (h *SniffHeader) Protocol() string {
 func (h *SniffHeader) Protocol() string {
-	switch h.version {
-	case HTTP1:
-		return "http1"
-	case HTTP2:
-		return "http2"
-	default:
-		return "unknown"
-	}
+	return "http1"
 }
 }
 
 
 func (h *SniffHeader) Domain() string {
 func (h *SniffHeader) Domain() string {
@@ -62,9 +49,7 @@ func SniffHTTP(b []byte) (*SniffHeader, error) {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	sh := &SniffHeader{
-		version: HTTP1,
-	}
+	sh := &SniffHeader{}
 
 
 	headers := bytes.Split(b, []byte{'\n'})
 	headers := bytes.Split(b, []byte{'\n'})
 	for i := 1; i < len(headers); i++ {
 	for i := 1; i < len(headers); i++ {

+ 1 - 3
proxy/http/server.go

@@ -242,9 +242,7 @@ func (s *Server) handlePlainHTTP(ctx context.Context, request *http.Request, wri
 		request.Header.Set("User-Agent", "")
 		request.Header.Set("User-Agent", "")
 	}
 	}
 
 
-	content := &session.Content{
-		Protocol: "http/1.1",
-	}
+	content := &session.Content{}
 
 
 	content.SetAttribute(":method", strings.ToUpper(request.Method))
 	content.SetAttribute(":method", strings.ToUpper(request.Method))
 	content.SetAttribute(":path", request.URL.Path)
 	content.SetAttribute(":path", request.URL.Path)