1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-30 05:56:54 -05:00

support attributes in session.Content

This commit is contained in:
Darien Raymond 2019-02-28 11:45:06 +01:00
parent 39835e8da2
commit 888494aac8
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
2 changed files with 27 additions and 2 deletions

View File

@ -66,4 +66,20 @@ type Content struct {
Protocol string
SniffingRequest SniffingRequest
attr map[string]interface{}
}
func (c *Content) SetAttribute(name string, value interface{}) {
if c.attr == nil {
c.attr = make(map[string]interface{})
}
c.attr[name] = value
}
func (c *Content) Attribute(name string) interface{} {
if c.attr == nil {
return nil
}
return c.attr[name]
}

View File

@ -239,9 +239,18 @@ func (s *Server) handlePlainHTTP(ctx context.Context, request *http.Request, wri
request.Header.Set("User-Agent", "")
}
ctx = session.ContextWithContent(ctx, &session.Content{
content := &session.Content{
Protocol: "http/1.1",
})
}
content.SetAttribute(":method", request.Method)
content.SetAttribute(":path", request.URL.Path)
for key := range request.Header {
value := request.Header.Get(key)
content.SetAttribute(strings.ToLower(key), value)
}
ctx = session.ContextWithContent(ctx, content)
link, err := dispatcher.Dispatch(ctx, dest)
if err != nil {