29
29
30
30
#define ALPHA 0.2
31
31
32
-
33
- static uint8_t kMongocEmptyBson [] = {5 , 0 , 0 , 0 , 0 };
34
-
35
32
static bson_oid_t kObjectIdZero = {{0 }};
36
33
37
34
static bool
@@ -54,9 +51,6 @@ mongoc_server_description_reset (mongoc_server_description_t *sd)
54
51
{
55
52
BSON_ASSERT (sd );
56
53
57
- /* set other fields to default or empty states. election_id is zeroed. */
58
- memset (
59
- & sd -> set_name , 0 , sizeof (* sd ) - ((char * ) & sd -> set_name - (char * ) sd ));
60
54
memset (& sd -> error , 0 , sizeof sd -> error );
61
55
sd -> set_name = NULL ;
62
56
sd -> type = MONGOC_SERVER_UNKNOWN ;
@@ -73,6 +67,19 @@ mongoc_server_description_reset (mongoc_server_description_t *sd)
73
67
bson_init (& sd -> last_is_master );
74
68
sd -> has_is_master = false;
75
69
sd -> last_update_time_usec = bson_get_monotonic_time ();
70
+
71
+ bson_init (& sd -> hosts );
72
+ bson_init (& sd -> passives );
73
+ bson_init (& sd -> arbiters );
74
+ bson_init (& sd -> tags );
75
+ #ifdef MONGOC_ENABLE_COMPRESSION
76
+ bson_init (& sd -> compressors );
77
+ #endif
78
+
79
+ sd -> me = NULL ;
80
+ sd -> current_primary = NULL ;
81
+ sd -> set_version = MONGOC_NO_SET_VERSION ;
82
+ bson_oid_copy_unsafe (& kObjectIdZero , & sd -> election_id );
76
83
}
77
84
78
85
/*
@@ -100,44 +107,20 @@ mongoc_server_description_init (mongoc_server_description_t *sd,
100
107
BSON_ASSERT (sd );
101
108
BSON_ASSERT (address );
102
109
103
- memset (sd , 0 , sizeof * sd );
104
-
105
110
sd -> id = id ;
106
111
sd -> type = MONGOC_SERVER_UNKNOWN ;
107
112
sd -> round_trip_time_msec = -1 ;
108
113
109
- sd -> set_name = NULL ;
110
- sd -> set_version = MONGOC_NO_SET_VERSION ;
111
- sd -> current_primary = NULL ;
112
-
113
114
if (!_mongoc_host_list_from_string (& sd -> host , address )) {
114
115
MONGOC_WARNING ("Failed to parse uri for %s" , address );
115
116
return ;
116
117
}
117
118
118
119
sd -> connection_address = sd -> host .host_and_port ;
119
-
120
- sd -> me = NULL ;
121
- sd -> min_wire_version = MONGOC_DEFAULT_WIRE_VERSION ;
122
- sd -> max_wire_version = MONGOC_DEFAULT_WIRE_VERSION ;
123
- sd -> max_msg_size = MONGOC_DEFAULT_MAX_MSG_SIZE ;
124
- sd -> max_bson_obj_size = MONGOC_DEFAULT_BSON_OBJ_SIZE ;
125
- sd -> max_write_batch_size = MONGOC_DEFAULT_WRITE_BATCH_SIZE ;
126
- sd -> last_write_date_ms = -1 ;
127
-
128
- bson_init_static (& sd -> hosts , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
129
- bson_init_static (
130
- & sd -> passives , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
131
- bson_init_static (
132
- & sd -> arbiters , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
133
- bson_init_static (& sd -> tags , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
134
- #ifdef MONGOC_ENABLE_COMPRESSION
135
- bson_init_static (
136
- & sd -> compressors , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
137
- #endif
138
-
139
120
bson_init (& sd -> last_is_master );
140
121
122
+ mongoc_server_description_reset (sd );
123
+
141
124
EXIT ;
142
125
}
143
126
@@ -697,29 +680,17 @@ mongoc_server_description_new_copy (
697
680
copy -> round_trip_time_msec = -1 ;
698
681
699
682
copy -> connection_address = copy -> host .host_and_port ;
700
-
701
- /* wait for handle_ismaster to fill these in properly */
702
- copy -> has_is_master = false;
703
- copy -> set_version = MONGOC_NO_SET_VERSION ;
704
- bson_init_static (& copy -> hosts , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
705
- bson_init_static (
706
- & copy -> passives , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
707
- bson_init_static (
708
- & copy -> arbiters , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
709
- bson_init_static (& copy -> tags , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
710
- #ifdef MONGOC_ENABLE_COMPRESSION
711
- bson_init_static (
712
- & copy -> compressors , kMongocEmptyBson , sizeof (kMongocEmptyBson ));
713
- #endif
714
-
715
683
bson_init (& copy -> last_is_master );
716
684
717
685
if (description -> has_is_master ) {
686
+ /* calls mongoc_server_description_reset */
718
687
mongoc_server_description_handle_ismaster (
719
688
copy ,
720
689
& description -> last_is_master ,
721
690
description -> round_trip_time_msec ,
722
691
& description -> error );
692
+ } else {
693
+ mongoc_server_description_reset (copy );
723
694
}
724
695
725
696
/* Preserve the error */
0 commit comments