Skip to content

Commit 2f2e0f2

Browse files
committed
Merge pull request #16
1066519 Use b2lx instead of hexlify in net.py (Florian Schmaus) a93dad4 Add msg_reject (Florian Schmaus) 7c46991 Add msg_notfound (Florian Schmaus)
2 parents ed8cd36 + 1066519 commit 2f2e0f2

File tree

3 files changed

+61
-5
lines changed

3 files changed

+61
-5
lines changed

bitcoin/messages.py

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,25 @@ def msg_ser(self, f):
259259
def __repr__(self):
260260
return "msg_getdata(inv=%s)" % (repr(self.inv))
261261

262+
class msg_notfound(MsgSerializable):
263+
command = b"notfound"
264+
265+
def __init__(self, protover=PROTO_VERSION):
266+
super(msg_notfound, self).__init__(protover)
267+
self.inv = []
268+
269+
@classmethod
270+
def msg_deser(cls, f, protover=PROTO_VERSION):
271+
c = cls()
272+
c.inv = VectorSerializer.stream_deserialize(CInv, f)
273+
return c
274+
275+
def msg_ser(self, f):
276+
VectorSerializer.stream_serialize(CInv, self.inv, f)
277+
278+
def __repr__(self):
279+
return "msg_notfound(inv=%s)" % (repr(self.inv))
280+
262281

263282
class msg_getblocks(MsgSerializable):
264283
command = b"getblocks"
@@ -423,6 +442,32 @@ def __repr__(self):
423442
return "msg_pong(0x%x)" % (self.nonce,)
424443

425444

445+
class msg_reject(MsgSerializable):
446+
command = b"reject"
447+
448+
def __init__(self, protover=PROTO_VERSION):
449+
super(msg_reject, self).__init__(protover)
450+
self.message = b'(Message Unitialized)'
451+
self.ccode = b'\0'
452+
self.reason = b'(Reason Unitialized)'
453+
454+
@classmethod
455+
def msg_deser(cls, f, protover=PROTO_VERSION):
456+
c = cls()
457+
c.message = VarStringSerializer.stream_deserialize(f)
458+
c.ccode = struct.unpack(b"<c", ser_read(f,1))[0]
459+
c.reason = VarStringSerializer.stream_deserialize(f)
460+
return c
461+
462+
def msg_ser(self, f):
463+
VarStringSerializer.stream_serialize(self.message, f)
464+
f.write(struct.pack(b"<c", self.ccode))
465+
VarStringSerializer.stream_serialize(self.reason, f)
466+
467+
def __repr__(self):
468+
return "msg_reject(messsage=%s, ccode=%s, reason=%s)" % (self.message, self.ccode, self.reason)
469+
470+
426471
class msg_mempool(MsgSerializable):
427472
command = b"mempool"
428473

@@ -440,9 +485,9 @@ def __repr__(self):
440485
return "msg_mempool()"
441486

442487
msg_classes = [msg_version, msg_verack, msg_addr, msg_alert, msg_inv,
443-
msg_getdata, msg_getblocks, msg_getheaders,
488+
msg_getdata, msg_notfound, msg_getblocks, msg_getheaders,
444489
msg_headers, msg_tx, msg_block, msg_getaddr, msg_ping,
445-
msg_pong, msg_mempool]
490+
msg_pong, msg_reject, msg_mempool]
446491

447492
messagemap = {}
448493
for cls in msg_classes:

bitcoin/net.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313

1414
import struct
1515
import socket
16-
from binascii import hexlify
1716

1817
from bitcoin.core.serialize import (
1918
Serializable,
2019
VarStringSerializer,
2120
ser_read,
2221
uint256VectorSerializer,
2322
)
23+
from bitcoin.core import b2lx
2424

2525
PROTO_VERSION = 60002
2626
CADDR_TIME_VERSION = 31402
@@ -80,7 +80,7 @@ def stream_serialize(self, f):
8080
f.write(self.hash)
8181

8282
def __repr__(self):
83-
return "CInv(type=%s hash=%s)" % (self.typemap[self.type], hexlify(self.hash))
83+
return "CInv(type=%s hash=%s)" % (self.typemap[self.type], b2lx(self.hash))
8484

8585

8686
class CBlockLocator(Serializable):

bitcoin/tests/test_messages.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
from bitcoin.messages import msg_version, msg_verack, msg_addr, msg_alert, \
1515
msg_inv, msg_getdata, msg_getblocks, msg_getheaders, msg_headers, msg_tx, \
16-
msg_block, msg_getaddr, msg_ping, msg_pong, msg_mempool, MsgSerializable
16+
msg_block, msg_getaddr, msg_ping, msg_pong, msg_mempool, MsgSerializable, \
17+
msg_notfound, msg_reject
1718

1819
import sys
1920
if sys.version > '3':
@@ -66,6 +67,11 @@ def test_serialization(self):
6667
super(Test_msg_getblocks, self).serialization_test(msg_getblocks)
6768

6869

70+
class Test_msg_notfound(MessageTestCase):
71+
def test_serialization(self):
72+
super(Test_msg_notfound, self).serialization_test(msg_notfound)
73+
74+
6975
class Test_msg_getheaders(MessageTestCase):
7076
def test_serialization(self):
7177
super(Test_msg_getheaders, self).serialization_test(msg_getheaders)
@@ -101,6 +107,11 @@ def test_serialization(self):
101107
super(Test_msg_pong, self).serialization_test(msg_pong)
102108

103109

110+
class Test_msg_reject(MessageTestCase):
111+
def test_serialization(self):
112+
super(Test_msg_reject, self).serialization_test(msg_reject)
113+
114+
104115
class Test_msg_mempool(MessageTestCase):
105116
def test_serialization(self):
106117
super(Test_msg_mempool, self).serialization_test(msg_mempool)

0 commit comments

Comments
 (0)