Created
May 10, 2019 20:59
-
-
Save Stebalien/942c98b497554f52f4a26f4bfa39fbfb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/go.mod b/go.mod | |
index 54baad7..d1a2acd 100644 | |
--- a/go.mod | |
+++ b/go.mod | |
@@ -1,6 +1,7 @@ | |
module github.com/libp2p/go-libp2p-transport-upgrader | |
require ( | |
+ github.com/Stebalien/go-dbuf v0.0.0-20190510190534-6db3381d14ea | |
github.com/ipfs/go-log v0.0.1 | |
github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2 | |
github.com/libp2p/go-conn-security v0.0.1 | |
diff --git a/go.sum b/go.sum | |
index 613dbae..9eded37 100644 | |
--- a/go.sum | |
+++ b/go.sum | |
@@ -1,5 +1,7 @@ | |
github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= | |
github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= | |
+github.com/Stebalien/go-dbuf v0.0.0-20190510190534-6db3381d14ea h1:O6EHZpSAV/rGEAxkuczXOmBNLKW/KWiIe6IHewAGc+Q= | |
+github.com/Stebalien/go-dbuf v0.0.0-20190510190534-6db3381d14ea/go.mod h1:SA8BEWXq5McGcBh5EitVi0mJMcssnzeMvuF1FHB02Ms= | |
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= | |
github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32 h1:qkOC5Gd33k54tobS36cXdAzJbeHaduLtnLQQwNoIi78= | |
github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= | |
diff --git a/upgrader.go b/upgrader.go | |
index eacbb3d..450c8f5 100644 | |
--- a/upgrader.go | |
+++ b/upgrader.go | |
@@ -4,10 +4,14 @@ import ( | |
"context" | |
"errors" | |
"fmt" | |
+ "io" | |
"net" | |
+ "time" | |
+ dbuf "github.com/Stebalien/go-dbuf" | |
ss "github.com/libp2p/go-conn-security" | |
pnet "github.com/libp2p/go-libp2p-interface-pnet" | |
+ inet "github.com/libp2p/go-libp2p-net" | |
peer "github.com/libp2p/go-libp2p-peer" | |
transport "github.com/libp2p/go-libp2p-transport" | |
filter "github.com/libp2p/go-maddr-filter" | |
@@ -62,6 +66,16 @@ func (u *Upgrader) UpgradeInbound(ctx context.Context, t transport.Transport, ma | |
return u.upgrade(ctx, t, maconn, "") | |
} | |
+type notwrite interface { | |
+ io.Reader | |
+ inet.ConnSecurity | |
+ LocalAddr() net.Addr | |
+ RemoteAddr() net.Addr | |
+ SetDeadline(t time.Time) error | |
+ SetReadDeadline(t time.Time) error | |
+ SetWriteDeadline(t time.Time) error | |
+} | |
+ | |
func (u *Upgrader) upgrade(ctx context.Context, t transport.Transport, maconn manet.Conn, p peer.ID) (transport.Conn, error) { | |
if u.Filters != nil && u.Filters.AddrBlocked(maconn.RemoteMultiaddr()) { | |
log.Debugf("blocked connection from %s", maconn.RemoteMultiaddr()) | |
@@ -87,6 +101,11 @@ func (u *Upgrader) upgrade(ctx context.Context, t transport.Transport, maconn ma | |
conn.Close() | |
return nil, fmt.Errorf("failed to negotiate security protocol: %s", err) | |
} | |
+ sconn = struct { | |
+ io.WriteCloser | |
+ notwrite | |
+ }{dbuf.NewWriter(sconn), sconn} | |
+ | |
smconn, err := u.setupMuxer(ctx, sconn, p) | |
if err != nil { | |
sconn.Close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment