@@ -192,19 +192,24 @@ def ToHex(obj):
192192
193193class CAddress ():
194194 def __init__ (self ):
195+ self .time = 0
195196 self .nServices = 1
196197 self .pchReserved = b"\x00 " * 10 + b"\xff " * 2
197198 self .ip = "0.0.0.0"
198199 self .port = 0
199200
200- def deserialize (self , f ):
201+ def deserialize (self , f , with_time = True ):
202+ if with_time :
203+ self .time = struct .unpack ("<i" , f .read (4 ))[0 ]
201204 self .nServices = struct .unpack ("<Q" , f .read (8 ))[0 ]
202205 self .pchReserved = f .read (12 )
203206 self .ip = socket .inet_ntoa (f .read (4 ))
204207 self .port = struct .unpack (">H" , f .read (2 ))[0 ]
205208
206- def serialize (self ):
209+ def serialize (self , with_time = True ):
207210 r = b""
211+ if with_time :
212+ r += struct .pack ("<i" , self .time )
208213 r += struct .pack ("<Q" , self .nServices )
209214 r += self .pchReserved
210215 r += socket .inet_aton (self .ip )
@@ -923,11 +928,11 @@ def deserialize(self, f):
923928 self .nServices = struct .unpack ("<Q" , f .read (8 ))[0 ]
924929 self .nTime = struct .unpack ("<q" , f .read (8 ))[0 ]
925930 self .addrTo = CAddress ()
926- self .addrTo .deserialize (f )
931+ self .addrTo .deserialize (f , False )
927932
928933 if self .nVersion >= 106 :
929934 self .addrFrom = CAddress ()
930- self .addrFrom .deserialize (f )
935+ self .addrFrom .deserialize (f , False )
931936 self .nNonce = struct .unpack ("<Q" , f .read (8 ))[0 ]
932937 self .strSubVer = deser_string (f ).decode ('utf-8' )
933938 else :
@@ -955,8 +960,8 @@ def serialize(self):
955960 r += struct .pack ("<i" , self .nVersion )
956961 r += struct .pack ("<Q" , self .nServices )
957962 r += struct .pack ("<q" , self .nTime )
958- r += self .addrTo .serialize ()
959- r += self .addrFrom .serialize ()
963+ r += self .addrTo .serialize (False )
964+ r += self .addrFrom .serialize (False )
960965 r += struct .pack ("<Q" , self .nNonce )
961966 r += ser_string (self .strSubVer .encode ('utf-8' ))
962967 r += struct .pack ("<i" , self .nStartingHeight )
0 commit comments