compy/proxy/mitmconn.go
Barna Csorogi 47488248d2 add dummy implementation for mitmConn.LocalAddr()
Fixes panic due to unimplemented method when the stdlib http server
calls this under certain conditions.
For our mitm implementation of net.Conn, an empty address string should be sufficient.
2018-02-05 01:21:11 +01:00

75 lines
1.1 KiB
Go

package proxy
import (
"io"
"net"
"net/http"
"time"
)
type mitmConn struct {
w FlushWriter
r io.Reader
remoteAddr addr
closed chan struct{}
}
type FlushWriter interface {
io.Writer
http.Flusher
}
func newMitmConn(w FlushWriter, r io.Reader, remoteAddr string) *mitmConn {
return &mitmConn{
w: w,
r: r,
remoteAddr: addr(remoteAddr),
closed: make(chan struct{}),
}
}
func (c *mitmConn) Read(b []byte) (int, error) {
return c.r.Read(b)
}
func (c *mitmConn) Write(b []byte) (int, error) {
n, err := c.w.Write(b)
c.w.Flush()
return n, err
}
func (c *mitmConn) Close() error {
close(c.closed)
return nil
}
func (c *mitmConn) RemoteAddr() net.Addr {
return c.remoteAddr
}
func (c *mitmConn) LocalAddr() net.Addr {
return addr("")
}
func (c *mitmConn) SetDeadline(t time.Time) error {
return nil
}
func (c *mitmConn) SetReadDeadline(t time.Time) error {
return nil
}
func (c *mitmConn) SetWriteDeadline(t time.Time) error {
return nil
}
type addr string
func (a addr) String() string {
return string(a)
}
func (a addr) Network() string {
return "tcp"
}