]> Cypherpunks repositories - govpn.git/commitdiff
Performance increase by relieving GC
authorSergey Matveev <stargrave@stargrave.org>
Fri, 1 May 2015 10:41:02 +0000 (13:41 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 1 May 2015 10:41:02 +0000 (13:41 +0300)
Signed-off-by: Sergey Matveev <stargrave@stargrave.org>
cmd/govpn-client/main.go
cmd/govpn-server/main.go
transport.go

index b5f86f9657a0fae84ff5b7336d2f5a8f630cf00a..c4b4fe440842365309ad99054bc40aca9a80e106 100644 (file)
@@ -82,7 +82,7 @@ func main() {
        firstUpCall := true
        var peer *govpn.Peer
        var ethPkt []byte
-       var udpPkt *govpn.UDPPkt
+       var udpPkt govpn.UDPPkt
        var udpPktData []byte
        knownPeers := govpn.KnownPeers(map[string]**govpn.Peer{remote.String(): &peer})
 
@@ -126,7 +126,7 @@ MainCycle:
                        if timeouts >= timeout {
                                break MainCycle
                        }
-                       if udpPkt == nil {
+                       if udpPkt.Addr == nil {
                                udpReady <- struct{}{}
                                continue
                        }
index 2761d340a1b85b032731c31f9982675d225771a8..cfcc45f4dee61a628cc1578a9af5d0f356b55b42 100644 (file)
@@ -113,7 +113,7 @@ func main() {
        peerReadySink := make(chan PeerReadyEvent)
        knownPeers := govpn.KnownPeers(make(map[string]**govpn.Peer))
        var peerReady PeerReadyEvent
-       var udpPkt *govpn.UDPPkt
+       var udpPkt govpn.UDPPkt
        var udpPktData []byte
        var ethEvent EthEvent
        var peerId *govpn.PeerId
@@ -196,7 +196,7 @@ MainCycle:
                        }
                        ethEvent.peer.EthProcess(ethEvent.data, conn, ethEvent.ready)
                case udpPkt = <-udpSink:
-                       if udpPkt == nil {
+                       if udpPkt.Addr == nil {
                                udpReady <- struct{}{}
                                continue
                        }
index 3c284f20990c51fc05c6da91c46ce4db3f7f4dcd..f33730218ee7d8955a38a860ec8a7bedf9f1f552 100644 (file)
@@ -166,9 +166,9 @@ func TAPListen(ifaceName string) (*TAP, chan []byte, chan struct{}, chan struct{
 // all UDP packet data will be saved, channel where information about
 // remote address and number of written bytes are stored, and a channel
 // used to tell that buffer is ready to be overwritten.
-func ConnListen(conn *net.UDPConn) (chan *UDPPkt, []byte, chan struct{}) {
+func ConnListen(conn *net.UDPConn) (chan UDPPkt, []byte, chan struct{}) {
        buf := make([]byte, MTU)
-       sink := make(chan *UDPPkt)
+       sink := make(chan UDPPkt)
        sinkReady := make(chan struct{})
        go func(conn *net.UDPConn) {
                var n int
@@ -180,10 +180,10 @@ func ConnListen(conn *net.UDPConn) (chan *UDPPkt, []byte, chan struct{}) {
                        n, addr, err = conn.ReadFromUDP(buf)
                        if err != nil {
                                // This is needed for ticking the timeouts counter outside
-                               sink <- nil
+                               sink <- UDPPkt{nil, 0}
                                continue
                        }
-                       sink <- &UDPPkt{addr, n}
+                       sink <- UDPPkt{addr, n}
                }
        }(conn)
        sinkReady <- struct{}{}