~emersion/tlstunnel

30dc7be08e8afa7a33da3a8228377755ae96d34a — Simon Ser 23 days ago dab2eb4
readme: fix issue tracker link
2 files changed, 19 insertions(+), 1 deletions(-)

M README.md
M server.go
M README.md => README.md +1 -1
@@ 28,4 28,4 @@ MIT
[tlstunnel]: https://sr.ht/~emersion/tlstunnel/
[PROXY protocol]: https://www.haproxy.org/download/2.3/doc/proxy-protocol.txt
[mailing list]: https://lists.sr.ht/~emersion/public-inbox
[issue tracker]: https://git.sr.ht/~emersion/tlstunnel
[issue tracker]: https://todo.sr.ht/~emersion/tlstunnel

M server.go => server.go +18 -0
@@ 15,6 15,10 @@ import (
	"github.com/pires/go-proxyproto/tlvparse"
)

type conn struct {
	downstream, upstream net.Conn
}

type Server struct {
	Listeners map[string]*Listener // indexed by listening address
	Frontends []*Frontend


@@ 24,6 28,8 @@ type Server struct {

	ACMEManager *certmagic.ACMEManager
	ACMEConfig  *certmagic.Config

	conns map[*conn]struct{}
}

func NewServer() *Server {


@@ 76,10 82,16 @@ func (srv *Server) Start() error {
	return nil
}

func (srv *Server) Close() error {
	
}

type Listener struct {
	Address   string
	Server    *Server
	Frontends map[string]*Frontend // indexed by server name

	ln net.Listener
}

func newListener(srv *Server, addr string) *Listener {


@@ 105,6 117,8 @@ func (ln *Listener) Start() error {
	}
	log.Printf("listening on %q", ln.Address)

	ln.ln = netLn

	go func() {
		if err := ln.serve(netLn); err != nil {
			log.Fatalf("listener %q: %v", ln.Address, err)


@@ 114,6 128,10 @@ func (ln *Listener) Start() error {
	return nil
}

func (ln *Listener) Close() error {
	return ln.ln.Close()
}

func (ln *Listener) serve(netLn net.Listener) error {
	for {
		conn, err := netLn.Accept()