Skip to content

Commit b27fd23

Browse files
committed
Moves message network checking to message parser
1 parent 8756a45 commit b27fd23

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

BitcoinSwift/MessageParser.swift

+7-3
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,14 @@ public class MessageParser {
8484
}
8585
let payloadData = NSData(bytes: receivedBytes, length: payloadLength)
8686
let message = Message(header: receivedHeader!, payloadData: payloadData)
87-
if message.isChecksumValid() {
88-
delegate?.didParseMessage(message)
87+
if message.header.network == network {
88+
if message.isChecksumValid() {
89+
delegate?.didParseMessage(message)
90+
} else {
91+
Logger.warn("Dropping \(message.command.rawValue) message with invalid checksum")
92+
}
8993
} else {
90-
Logger.warn("Dropping \(message.command.rawValue) message with invalid checksum")
94+
Logger.warn("Dropping \(message.command.rawValue) message with invalid network header: \(message.header.network) != \(network)")
9195
}
9296
receivedBytes.removeRange(0..<payloadLength)
9397
receivedHeader = nil

BitcoinSwift/Models/MessageHeader.swift

+1-6
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,6 @@ extension Message.Header: BitcoinSerializable {
5858
Logger.warn("Failed to parse network magic value in message header")
5959
return nil
6060
}
61-
let network = Message.Network(rawValue: NetworkMagicNumber(networkRaw!))
62-
if network == nil {
63-
Logger.warn("Unsupported network \(networkRaw!) in message header")
64-
return nil
65-
}
6661
let commandRaw = stream.readASCIIStringWithLength(Message.Command.encodedLength)
6762
if commandRaw == nil {
6863
Logger.warn("Failed to parse command in message header")
@@ -83,7 +78,7 @@ extension Message.Header: BitcoinSerializable {
8378
Logger.warn("Failed to parse payload checksum in message header")
8479
return nil
8580
}
86-
return Message.Header(network: network!.rawValue,
81+
return Message.Header(network: NetworkMagicNumber(networkRaw!),
8782
command: command!,
8883
payloadLength: payloadLength!,
8984
payloadChecksum: payloadChecksum!)

BitcoinSwiftLiveTests/PeerConnectionLiveTest.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class PeerConnectionLiveTest: XCTestCase, PeerConnectionDelegate {
1818
}
1919

2020
func testConnect() {
21-
let conn = PeerConnection(hostname: "anduck.net",
21+
let conn = PeerConnection(hostname: "localhost",
2222
port: 8333,
2323
network: Message.Network.MainNet.rawValue,
2424
delegate: self)

0 commit comments

Comments
 (0)