func (mod *module) Init() error { mod.log = logs.Module("bridge").From(mod.e.LocalHashname()) mod.e.DefaultExchangeHooks().Register(e3x.ExchangeHook{ OnClosed: mod.on_exchange_closed, OnDropPacket: mod.on_dropped_packet, }) return nil }
package bridge import ( "encoding/hex" "github.com/telehash/gogotelehash/e3x" "github.com/telehash/gogotelehash/e3x/cipherset" "github.com/telehash/gogotelehash/internal/hashname" "github.com/telehash/gogotelehash/internal/lob" "github.com/telehash/gogotelehash/internal/util/bufpool" "github.com/telehash/gogotelehash/internal/util/logs" ) var mainLog = logs.Module("peers") func (mod *module) connect(ex *e3x.Exchange, inner *bufpool.Buffer) error { ch, err := ex.Open("connect", false) if err != nil { return err } defer ch.Kill() err = ch.WritePacket(lob.New(inner.RawBytes())) if err != nil { return err } return nil }
import ( "net" "testing" "github.com/telehash/gogotelehash/Godeps/_workspace/src/github.com/stretchr/testify/assert" "github.com/telehash/gogotelehash/e3x" "github.com/telehash/gogotelehash/internal/lob" "github.com/telehash/gogotelehash/internal/util/logs" "github.com/telehash/gogotelehash/transports" "github.com/telehash/gogotelehash/transports/fw" "github.com/telehash/gogotelehash/transports/udp" ) var log = logs.Module("test") func TestBridge(t *testing.T) { // given: // A <-> B exchange // B <-> R exchange // A x-x R no exchange // // when: // R --> B route token from A->B to B // A --x B block A from contacting B (while adding R's addresses to the exchange A->B) // // then: // A and B should still be able to communicate. assert := assert.New(t)