From 8a54af92ef976443faf7fce776322a857c70e57d Mon Sep 17 00:00:00 2001 From: David Wragg Date: Tue, 19 May 2015 10:43:29 +0100 Subject: [PATCH] Remove forwarder Start methods --- router/forwarder.go | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/router/forwarder.go b/router/forwarder.go index a4cec472..303a167c 100644 --- a/router/forwarder.go +++ b/router/forwarder.go @@ -39,16 +39,12 @@ func (conn *LocalConnection) ensureForwarders() error { forwarder := NewForwarder(conn, encryptor, udpSender, DefaultPMTU) forwarderDF := NewForwarderDF(conn, encryptorDF, udpSenderDF, DefaultPMTU) - effectivePMTU := forwarderDF.unverifiedPMTU - forwarder.Start() - forwarderDF.Start() // Various fields in the conn struct are read by other processes, // so we have to use locks. conn.Lock() conn.forwarder = forwarder conn.forwarderDF = forwarderDF - conn.effectivePMTU = effectivePMTU conn.Unlock() return nil @@ -194,20 +190,18 @@ type Forwarder struct { } func NewForwarder(conn *LocalConnection, enc Encryptor, udpSender UDPSender, pmtu int) *Forwarder { - return &Forwarder{ + ch := make(chan *ForwardedFrame, ChannelSize) + finished := make(chan struct{}) + fwd := &Forwarder{ conn: conn, + ch: ch, + finished: finished, enc: enc, udpSender: udpSender, maxPayload: pmtu - UDPOverhead, processSendError: func(err error) error { return err }} -} - -func (fwd *Forwarder) Start() { - ch := make(chan *ForwardedFrame, ChannelSize) - fwd.ch = ch - finished := make(chan struct{}) - fwd.finished = finished go fwd.run(ch, finished) + return fwd } func (fwd *Forwarder) Shutdown() { @@ -309,25 +303,23 @@ type ForwarderDF struct { } func NewForwarderDF(conn *LocalConnection, enc Encryptor, udpSender UDPSender, pmtu int) *ForwarderDF { + ch := make(chan *ForwardedFrame, ChannelSize) + finished := make(chan struct{}) + verifyPMTU := make(chan int, ChannelSize) fwd := &ForwarderDF{ Forwarder: Forwarder{ conn: conn, + ch: ch, + finished: finished, enc: enc, udpSender: udpSender, - maxPayload: pmtu - UDPOverhead}} + maxPayload: pmtu - UDPOverhead}, + verifyPMTU: verifyPMTU} fwd.Forwarder.processSendError = fwd.processSendError fwd.unverifiedPMTU = pmtu - fwd.effectiveOverhead() - return fwd -} - -func (fwd *ForwarderDF) Start() { - ch := make(chan *ForwardedFrame, ChannelSize) - fwd.ch = ch - finished := make(chan struct{}) - fwd.finished = finished - verifyPMTU := make(chan int, ChannelSize) - fwd.verifyPMTU = verifyPMTU + conn.setEffectivePMTU(fwd.unverifiedPMTU) go fwd.run(ch, finished, verifyPMTU) + return fwd } func (fwd *ForwarderDF) PMTUVerified(pmtu int) {