(streamID uint32)
| 1005 | } |
| 1006 | |
| 1007 | func (p *proxy) newHTTP2Stream(streamID uint32) *http2Stream { |
| 1008 | eventID := uuid.New() |
| 1009 | slog.Debug("proxy: http/2: new event", "proxy", p, "eventID", eventID) |
| 1010 | |
| 1011 | event := p.global.Config.GetEventTemplate() |
| 1012 | event.Set("event_id", eventID.String()) |
| 1013 | |
| 1014 | st := new(http2Stream) |
| 1015 | st.streamID = streamID |
| 1016 | |
| 1017 | st.event = event |
| 1018 | st.parser = tracer.NewParser(p.global, event) |
| 1019 | |
| 1020 | st.active.Add(2) |
| 1021 | |
| 1022 | st.req.Request = new(http.Request) |
| 1023 | st.req.Request.Proto = "HTTP/2" |
| 1024 | st.req.Request.ProtoMajor = 2 |
| 1025 | st.req.Request.ProtoMinor = 0 |
| 1026 | st.req.Request.URL = new(url.URL) |
| 1027 | st.req.Request.Header = make(http.Header) |
| 1028 | st.req.Request.Trailer = make(http.Header) |
| 1029 | st.req.Request.Body, st.req.buf = io.Pipe() |
| 1030 | |
| 1031 | st.resp.Response = new(http.Response) |
| 1032 | st.resp.Response.Proto = "HTTP/2" |
| 1033 | st.resp.Response.ProtoMajor = 2 |
| 1034 | st.resp.Response.ProtoMinor = 0 |
| 1035 | st.resp.Response.Header = make(http.Header) |
| 1036 | st.resp.Response.Trailer = make(http.Header) |
| 1037 | st.resp.Response.Body, st.resp.buf = io.Pipe() |
| 1038 | |
| 1039 | go func() { |
| 1040 | st.active.Wait() |
| 1041 | if err := st.parser.Finish(); err != nil { |
| 1042 | slog.Error("failed to finish HAR parser", "eventID", st.event.Get("event_id"), "err", err) |
| 1043 | } |
| 1044 | }() |
| 1045 | |
| 1046 | return st |
| 1047 | } |
| 1048 | |
| 1049 | func (p *proxy) proxyHTTP2(cli, srv *bufConn) error { |
| 1050 | slog.Debug("starting proxyHTTP2", "proxy", p) |
no test coverage detected