@@ -21,6 +21,7 @@ import java.net.{Inet4Address, InetAddress, InetSocketAddress, ServerSocket}
2121import akka .actor .FSM .{CurrentState , SubscribeTransitionCallBack , Transition }
2222import akka .actor .{ActorRef , PoisonPill }
2323import akka .testkit .{TestFSMRef , TestProbe }
24+ import fr .acinq .bitcoin .Block
2425import fr .acinq .bitcoin .Crypto .PublicKey
2526import fr .acinq .eclair .TestConstants ._
2627import fr .acinq .eclair ._
@@ -31,7 +32,7 @@ import fr.acinq.eclair.crypto.TransportHandler
3132import fr .acinq .eclair .io .Peer ._
3233import fr .acinq .eclair .router .RoutingSyncSpec .makeFakeRoutingInfo
3334import fr .acinq .eclair .router .{Rebroadcast , RoutingSyncSpec , SendChannelQuery }
34- import fr .acinq .eclair .wire .{ChannelCodecsSpec , Color , EncodedShortChannelIds , EncodingType , Error , IPv4 , LightningMessageCodecs , NodeAddress , NodeAnnouncement , Ping , Pong , QueryShortChannelIds , TlvStream }
35+ import fr .acinq .eclair .wire .{ChannelCodecsSpec , Color , EncodedShortChannelIds , EncodingType , Error , IPv4 , InitTlv , LightningMessageCodecs , NodeAddress , NodeAnnouncement , Ping , Pong , QueryShortChannelIds , TlvStream }
3536import org .scalatest .{Outcome , Tag }
3637import scodec .bits .{ByteVector , _ }
3738
@@ -81,7 +82,8 @@ class PeerSpec extends TestkitBaseClass with StateTestsHelperMethods {
8182 probe.send(peer, Peer .Init (None , channels))
8283 authenticator.send(peer, Authenticator .Authenticated (connection.ref, transport.ref, remoteNodeId, fakeIPAddress.socketAddress, outgoing = true , None ))
8384 transport.expectMsgType[TransportHandler .Listener ]
84- transport.expectMsgType[wire.Init ]
85+ val localInit = transport.expectMsgType[wire.Init ]
86+ assert(localInit.networks === List (Block .RegtestGenesisBlock .hash))
8587 transport.send(peer, remoteInit)
8688 transport.expectMsgType[TransportHandler .ReadAck ]
8789 if (expectSync) {
@@ -255,6 +257,19 @@ class PeerSpec extends TestkitBaseClass with StateTestsHelperMethods {
255257 assert(init.features === sentFeatures.bytes)
256258 }
257259 }
260+
261+ test(" disconnect if incompatible networks" ) { f =>
262+ import f ._
263+ val probe = TestProbe ()
264+ probe.watch(transport.ref)
265+ probe.send(peer, Peer .Init (None , Set .empty))
266+ authenticator.send(peer, Authenticator .Authenticated (connection.ref, transport.ref, remoteNodeId, new InetSocketAddress (" 1.2.3.4" , 42000 ), outgoing = true , None ))
267+ transport.expectMsgType[TransportHandler .Listener ]
268+ transport.expectMsgType[wire.Init ]
269+ transport.send(peer, wire.Init (Bob .nodeParams.features, TlvStream (InitTlv .Networks (Block .LivenetGenesisBlock .hash :: Block .SegnetGenesisBlock .hash :: Nil ))))
270+ transport.expectMsgType[TransportHandler .ReadAck ]
271+ probe.expectTerminated(transport.ref)
272+ }
258273
259274 test(" handle disconnect in status INITIALIZING" ) { f =>
260275 import f ._
0 commit comments