Skip to content

Commit b238fe5

Browse files
committed
gossip: fix contact info instance creation wallclock ser/der units
1 parent aec7cba commit b238fe5

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

src/flamenco/gossip/fd_gossip_msg_parse.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ fd_gossip_msg_crds_contact_info_parse( fd_gossip_view_crds_value_t * crds_val,
311311
INC( decode_u64_varint( payload, payload_sz, CUR_OFFSET, &wallclock ) );
312312
crds_val->wallclock_nanos = FD_MILLI_TO_NANOSEC( wallclock );
313313

314-
CHECK_LEFT( 8U ); crds_val->contact_info->instance_creation_wallclock_nanos = FD_MILLI_TO_NANOSEC( FD_LOAD( ulong, CURSOR ) ); INC( 8U );
314+
CHECK_LEFT( 8U ); crds_val->contact_info->instance_creation_wallclock_nanos = FD_MICRO_TO_NANOSEC( FD_LOAD( ulong, CURSOR ) ); INC( 8U );
315315
CHECK_LEFT( 2U ); crds_val->contact_info->shred_version = FD_LOAD( ushort, CURSOR ) ; INC( 2U );
316316
INC( version_parse( crds_val->contact_info->version, payload, payload_sz, CUR_OFFSET ) );
317317

src/flamenco/gossip/fd_gossip_msg_ser.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ fd_gossip_contact_info_encode( fd_contact_info_t const * contact_info,
242242
ulong wallclock = (ulong)FD_NANOSEC_TO_MILLI( contact_info->wallclock_nanos );
243243
INC( varint_encode( wallclock, CURSOR ) );
244244

245-
ulong instance_creation_wallclock = (ulong)FD_NANOSEC_TO_MILLI( contact_info->instance_creation_wallclock_nanos );
245+
ulong instance_creation_wallclock = (ulong)FD_NANOSEC_TO_MICRO( contact_info->instance_creation_wallclock_nanos );
246246
FD_STORE( ulong, CURSOR, instance_creation_wallclock ); INC( 8UL );
247247
FD_STORE( ushort, CURSOR, contact_info->shred_version ); INC( 2UL );
248248

src/flamenco/gossip/fd_gossip_private.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,16 @@
4848
#define FD_GOSSIP_VALUE_RESTART_HEAVIEST_FORK (13)
4949
#define FD_GOSSIP_VALUE_LAST (FD_GOSSIP_VALUE_RESTART_HEAVIEST_FORK)
5050

51-
/* Gossip messages encode wallclock in millis, while we
52-
parse them into nanoseconds for internal use. */
51+
/* Gossip messages encode wallclock in millis*, while we
52+
parse them into nanoseconds for internal use.
53+
54+
* exceptions:
55+
- Contact Info outset (AKA instance creation wallclock) is encoded
56+
in micros */
5357
#define FD_NANOSEC_TO_MILLI(_ts_) ((long)(_ts_/1000000))
5458
#define FD_MILLI_TO_NANOSEC(_ts_) ((long)(_ts_*1000000))
59+
#define FD_NANOSEC_TO_MICRO(_ts_) ((long)(_ts_/1000))
60+
#define FD_MICRO_TO_NANOSEC(_ts_) ((long)(_ts_*1000))
5561

5662
/* Bound max inc entries by
5763
1188b (max CRDS encoded buffer size )

0 commit comments

Comments
 (0)