mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-20 13:23:22 -06:00
Determinate yamux roles
This commit is contained in:
parent
51dfb3aaf9
commit
450f4d17b7
|
|
@ -3,6 +3,7 @@ package yggconn
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net"
|
"net"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/libp2p/go-yamux"
|
"github.com/libp2p/go-yamux"
|
||||||
|
|
@ -24,9 +25,13 @@ func (n *Node) listenFromYgg() {
|
||||||
n.log.Println("n.listener.Accept:", err)
|
n.log.Println("n.listener.Accept:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
session, err := yamux.Server(conn, n.yamuxConfig())
|
var session *yamux.Session
|
||||||
|
if strings.Compare(n.EncryptionPublicKey(), conn.RemoteAddr().String()) < 0 {
|
||||||
|
session, err = yamux.Client(conn, n.yamuxConfig())
|
||||||
|
} else {
|
||||||
|
session, err = yamux.Server(conn, n.yamuxConfig())
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
n.log.Println("yamux.Server:", err)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
go n.listenFromYggConn(session)
|
go n.listenFromYggConn(session)
|
||||||
|
|
@ -77,15 +82,19 @@ func (n *Node) DialContext(ctx context.Context, network, address string) (net.Co
|
||||||
n.log.Println("n.dialer.DialContext:", err)
|
n.log.Println("n.dialer.DialContext:", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
session, err = yamux.Client(conn, n.yamuxConfig())
|
if strings.Compare(n.EncryptionPublicKey(), address) < 0 {
|
||||||
|
session, err = yamux.Client(conn, n.yamuxConfig())
|
||||||
|
} else {
|
||||||
|
session, err = yamux.Server(conn, n.yamuxConfig())
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
n.log.Println("yamux.Client.AcceptStream:", err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
go n.listenFromYggConn(session)
|
go n.listenFromYggConn(session)
|
||||||
}
|
}
|
||||||
st, err := session.OpenStream()
|
st, err := session.OpenStream()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
n.log.Println("session.OpenStream:", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return st, nil
|
return st, nil
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue