Skip to content

Commit 0e8be2f

Browse files
authored
Lock topology mutex before setting server API (#772)
1 parent 15828e0 commit 0e8be2f

File tree

3 files changed

+5
-0
lines changed

3 files changed

+5
-0
lines changed

src/libmongoc/src/mongoc/mongoc-client-pool.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,8 @@ mongoc_client_pool_set_server_api (mongoc_client_pool_t *pool,
540540
}
541541

542542
pool->api = mongoc_server_api_copy (api);
543+
bson_mutex_lock (&pool->topology->mutex);
543544
_mongoc_topology_scanner_set_server_api (pool->topology->scanner, api);
545+
bson_mutex_unlock (&pool->topology->mutex);
544546
return true;
545547
}

src/libmongoc/src/mongoc/mongoc-client.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3121,6 +3121,8 @@ mongoc_client_set_server_api (mongoc_client_t *client,
31213121
}
31223122

31233123
client->api = mongoc_server_api_copy (api);
3124+
bson_mutex_lock (&client->topology->mutex);
31243125
_mongoc_topology_scanner_set_server_api (client->topology->scanner, api);
3126+
bson_mutex_unlock (&client->topology->mutex);
31253127
return true;
31263128
}

src/libmongoc/src/mongoc/mongoc-topology-scanner.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,6 +1347,7 @@ _jumpstart_other_acmds (mongoc_topology_scanner_node_t *node,
13471347
}
13481348
}
13491349

1350+
/* Caller must lock topology->mutex to protect ismaster_cmd_with_handshake. */
13501351
void
13511352
_mongoc_topology_scanner_set_server_api (mongoc_topology_scanner_t *ts,
13521353
const mongoc_server_api_t *api)

0 commit comments

Comments
 (0)