Wire router ids through both the dialer and listener side of xlink. (#238)

This commit is contained in:
Michael Quigley
2021-05-14 15:02:40 -04:00
parent fa9da87419
commit 62b35848ed
5 changed files with 13 additions and 7 deletions
+2 -1
View File
@@ -66,7 +66,8 @@ func (self *dialHandler) handle(msg *channel2.Message, _ channel2.Channel) {
if err := proto.Unmarshal(msg.Body, dial); err == nil {
linkId := self.id.ShallowCloneWithNewToken(dial.LinkId)
if len(self.dialers) == 1 {
if err := self.dialers[0].Dial(dial.Address, linkId); err == nil {
logrus.Infof("dialing link to [r/%s]", dial.RouterId)
if err := self.dialers[0].Dial(dial.Address, linkId, self.id.Token); err == nil {
if err := self.sendLinkMessage(linkId); err != nil {
logrus.Errorf("error sending link message [l/%s] (%v)", linkId.Token, err)
}
+1 -1
View File
@@ -38,7 +38,7 @@ type Accepter interface {
}
type Dialer interface {
Dial(address string, id *identity.TokenId) error
Dial(address string, id *identity.TokenId, routerId string) error
}
type Xlink interface {
+4 -3
View File
@@ -26,7 +26,7 @@ import (
"github.com/sirupsen/logrus"
)
func (self *dialer) Dial(addressString string, linkId *identity.TokenId) error {
func (self *dialer) Dial(addressString string, linkId *identity.TokenId, routerId string) error {
address, err := transport.ParseAddress(addressString)
if err != nil {
return fmt.Errorf("error parsing link address [%s] (%w)", addressString, err)
@@ -36,8 +36,9 @@ func (self *dialer) Dial(addressString string, linkId *identity.TokenId) error {
connId := uuid.New().String()
payloadDialer := channel2.NewClassicDialer(linkId, address, map[int32][]byte{
LinkHeaderConnId: []byte(connId),
LinkHeaderType: {PayloadChannel},
LinkHeaderRouterId: []byte(routerId),
LinkHeaderConnId: []byte(connId),
LinkHeaderType: {PayloadChannel},
})
logrus.Infof("dialing payload channel for link [l/%s]", linkId.Token)
+3 -2
View File
@@ -24,8 +24,9 @@ import (
)
const (
LinkHeaderConnId = 0
LinkHeaderType = 1
LinkHeaderConnId = 0
LinkHeaderType = 1
LinkHeaderRouterId = 2
PayloadChannel = 1
AckChannel = 2
+3
View File
@@ -62,6 +62,9 @@ func (self *listener) acceptLoop() {
headers := ch.Underlay().Headers()
channelType := byte(0)
if headers != nil {
if v, ok := headers[LinkHeaderRouterId]; ok {
logrus.Infof("accepting link from [r/%s]", string(v))
}
if val, ok := headers[LinkHeaderType]; ok {
channelType = val[0]
}