Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Stebalien/942c98b497554f52f4a26f4bfa39fbfb to your computer and use it in GitHub Desktop.
Save Stebalien/942c98b497554f52f4a26f4bfa39fbfb to your computer and use it in GitHub Desktop.
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