Skip to content

Commit b4d8e71

Browse files
authored
UCT/BASE: Added nullcheck for notify callback (#11393)
* UCT/BASE: Added nullcheck for notify callback Signed-off-by: Roie Danino <rdanino@nvidia.com> * TEST/GTEST/UCT: added a gtest covering the scenario Signed-off-by: Roie Danino <rdanino@nvidia.com> --------- Signed-off-by: Roie Danino <rdanino@nvidia.com>
1 parent eae153e commit b4d8e71

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

src/uct/base/uct_cm.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ void uct_cm_ep_server_conn_notify_cb(uct_cm_base_ep_t *cep, ucs_status_t status)
124124
{
125125
uct_cm_ep_server_conn_notify_args_t notify_args;
126126

127+
if (cep->server.notify_cb == NULL) {
128+
return;
129+
}
130+
127131
notify_args.field_mask = UCT_CM_EP_SERVER_CONN_NOTIFY_ARGS_FIELD_STATUS;
128132
notify_args.status = status;
129133

test/gtest/uct/test_sockaddr.cc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,36 @@ UCS_TEST_P(test_uct_sockaddr, cm_server_reject)
919919
(TEST_STATE_SERVER_CONNECTED | TEST_STATE_CLIENT_CONNECTED)));
920920
}
921921

922+
UCS_TEST_P(test_uct_sockaddr, cm_server_reject_stress)
923+
{
924+
int num_iterations = ucs_max(2, 100 / ucs::test_time_multiplier());
925+
926+
for (int i = 0; i < num_iterations; ++i) {
927+
m_state = 0;
928+
m_server_recv_req_cnt = 0;
929+
m_reject_conn_request = true;
930+
931+
{
932+
scoped_log_handler slh(detect_reject_error_logger);
933+
934+
start_listen(conn_request_cb);
935+
connect();
936+
937+
wait_for_bits(&m_state, TEST_STATE_SERVER_REJECTED |
938+
TEST_STATE_CLIENT_GOT_REJECT);
939+
EXPECT_TRUE(ucs_test_all_flags(m_state,
940+
(TEST_STATE_SERVER_REJECTED |
941+
TEST_STATE_CLIENT_GOT_REJECT)));
942+
EXPECT_FALSE(m_state & (TEST_STATE_SERVER_CONNECTED |
943+
TEST_STATE_CLIENT_CONNECTED));
944+
}
945+
946+
release_user_data();
947+
m_client->destroy_eps();
948+
uct_listener_destroy(m_server->revoke_listener());
949+
}
950+
}
951+
922952
UCS_TEST_P(test_uct_sockaddr, many_conns_on_client)
923953
{
924954
int num_conns_on_client = ucs_max(2, 100 / ucs::test_time_multiplier());

0 commit comments

Comments
 (0)