From 3a0fba53e44c1b55940ad59a59132651fdead77c Mon Sep 17 00:00:00 2001 From: Pavithra Sundaravadivel Date: Wed, 4 Mar 2026 07:15:02 +0000 Subject: [PATCH 1/5] RDKB-63673 Fix PR0270(BPI connectivity) testcase issues --- src/sta/wlan_emu_ext_sta_mgr.cpp | 15 +++++++++++---- src/tests/wlan_emu_test_param_eth_lan_client.cpp | 4 ++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/sta/wlan_emu_ext_sta_mgr.cpp b/src/sta/wlan_emu_ext_sta_mgr.cpp index 7358fe0..91d6591 100644 --- a/src/sta/wlan_emu_ext_sta_mgr.cpp +++ b/src/sta/wlan_emu_ext_sta_mgr.cpp @@ -190,7 +190,7 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, if (ext_agent->get_external_agent_test_status(status, step->m_ui_mgr->cci_error_code) != RETURN_OK) { wlan_emu_print(wlan_emu_log_level_err, "%s:%d: Failed to get external agent status\n", __func__, __LINE__); - return RETURN_ERR; + goto err; } wlan_emu_print(wlan_emu_log_level_dbg, "%s:%d: external agent state: %d\n", __func__, __LINE__, @@ -210,13 +210,13 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, step->m_ui_mgr->cci_error_code = EFOPEN; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: fopen failed for %s\n", __func__, __LINE__, eth_connect_info); - return RETURN_ERR; + goto err; } if (fwrite(cli_subdoc.c_str(), cli_subdoc.length(), 1, fp) != 1) { step->m_ui_mgr->cci_error_code = EFWRITE; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: fwrite failed\n", __func__, __LINE__); fclose(fp); - return RETURN_ERR; + goto err; } fclose(fp); long status_code; @@ -225,10 +225,17 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, if (status_code != http_status_code_ok) { wlan_emu_print(wlan_emu_log_level_err, "%s:%d: http_post_file failed : %d\n", __func__, __LINE__, status_code); - return RETURN_ERR; + goto err; } return RETURN_OK; +err: + if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { + step->m_ui_mgr->cci_error_code = EEXTAGENT; + wlan_emu_print(wlan_emu_log_level_err, + "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); + } + return RETURN_ERR; } int wlan_emu_ext_sta_mgr_t::get_num_free_clients() diff --git a/src/tests/wlan_emu_test_param_eth_lan_client.cpp b/src/tests/wlan_emu_test_param_eth_lan_client.cpp index bc354aa..e461c9b 100644 --- a/src/tests/wlan_emu_test_param_eth_lan_client.cpp +++ b/src/tests/wlan_emu_test_param_eth_lan_client.cpp @@ -245,6 +245,10 @@ int test_step_param_eth_lan_client::step_timeout() wlan_emu_print(wlan_emu_log_level_err, "%s:%d: external agent state failed for %d\n", __func__, __LINE__, step->step_number); step->test_state = wlan_emu_tests_state_cmd_abort; + if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { + wlan_emu_print(wlan_emu_log_level_err, + "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); + } return RETURN_ERR; } From 5ef0f6bc0fb77a6b7e700505e667ad7648cd77d4 Mon Sep 17 00:00:00 2001 From: Pavithra Sundaravadivel Date: Wed, 4 Mar 2026 08:14:16 +0000 Subject: [PATCH 2/5] RDKB-63673 Fix PR0270(BPI connectivity) testcase issues --- src/sta/wlan_emu_ext_sta_mgr.cpp | 35 ++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/sta/wlan_emu_ext_sta_mgr.cpp b/src/sta/wlan_emu_ext_sta_mgr.cpp index 91d6591..80b2406 100644 --- a/src/sta/wlan_emu_ext_sta_mgr.cpp +++ b/src/sta/wlan_emu_ext_sta_mgr.cpp @@ -190,7 +190,12 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, if (ext_agent->get_external_agent_test_status(status, step->m_ui_mgr->cci_error_code) != RETURN_OK) { wlan_emu_print(wlan_emu_log_level_err, "%s:%d: Failed to get external agent status\n", __func__, __LINE__); - goto err; + if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { + step->m_ui_mgr->cci_error_code = EEXTAGENT; + wlan_emu_print(wlan_emu_log_level_err, + "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); + } + return RETURN_ERR; } wlan_emu_print(wlan_emu_log_level_dbg, "%s:%d: external agent state: %d\n", __func__, __LINE__, @@ -210,13 +215,23 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, step->m_ui_mgr->cci_error_code = EFOPEN; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: fopen failed for %s\n", __func__, __LINE__, eth_connect_info); - goto err; + if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { + step->m_ui_mgr->cci_error_code = EEXTAGENT; + wlan_emu_print(wlan_emu_log_level_err, + "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); + } + return RETURN_ERR; } if (fwrite(cli_subdoc.c_str(), cli_subdoc.length(), 1, fp) != 1) { step->m_ui_mgr->cci_error_code = EFWRITE; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: fwrite failed\n", __func__, __LINE__); fclose(fp); - goto err; + if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { + step->m_ui_mgr->cci_error_code = EEXTAGENT; + wlan_emu_print(wlan_emu_log_level_err, + "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); + } + return RETURN_ERR; } fclose(fp); long status_code; @@ -225,17 +240,15 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, if (status_code != http_status_code_ok) { wlan_emu_print(wlan_emu_log_level_err, "%s:%d: http_post_file failed : %d\n", __func__, __LINE__, status_code); - goto err; + if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { + step->m_ui_mgr->cci_error_code = EEXTAGENT; + wlan_emu_print(wlan_emu_log_level_err, + "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); + } + return RETURN_ERR; } return RETURN_OK; -err: - if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { - step->m_ui_mgr->cci_error_code = EEXTAGENT; - wlan_emu_print(wlan_emu_log_level_err, - "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); - } - return RETURN_ERR; } int wlan_emu_ext_sta_mgr_t::get_num_free_clients() From 20db86d8f629d2c20916e632e4d775a59bf91458 Mon Sep 17 00:00:00 2001 From: Pavithra Sundaravadivel Date: Mon, 9 Mar 2026 12:09:23 +0000 Subject: [PATCH 3/5] RDKB-63673 Fix FD leaks --- src/external_agent_cci/wlan_ext_emu.cpp | 6 ++++++ src/external_agent_cci/wlan_ext_emu_tests.cpp | 2 -- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/external_agent_cci/wlan_ext_emu.cpp b/src/external_agent_cci/wlan_ext_emu.cpp index df68642..c3b60df 100644 --- a/src/external_agent_cci/wlan_ext_emu.cpp +++ b/src/external_agent_cci/wlan_ext_emu.cpp @@ -818,36 +818,42 @@ void *wlan_ext_emu_t::http_server_handler(void *arg) /*get*/ ext_emu->enter_namespace("/var/run/netns/default"); ext_emu->agent_endpoint_capability(req, res); + ext_emu->leave_namespace(); }); svr.Get("/Status", [&](const Request &req, Response &res) { /*get*/ ext_emu->enter_namespace("/var/run/netns/default"); ext_emu->agent_endpoint_status(req, res); + ext_emu->leave_namespace(); }); svr.Get("/Results/(.+)", [&](const Request &req, Response &res) { /*get*/ ext_emu->enter_namespace("/var/run/netns/default"); ext_emu->agent_endpoint_results(req, res); + ext_emu->leave_namespace(); }); svr.Post("/Command", [&](const Request &req, Response &res) { /*post*/ ext_emu->enter_namespace("/var/run/netns/default"); ext_emu->agent_endpoint_command(req, res); + ext_emu->leave_namespace(); }); svr.Post("/Reffiles/(.+)", [&](const Request &req, Response &res) { /*post*/ ext_emu->enter_namespace("/var/run/netns/default"); ext_emu->agent_endpoint_reffiles(req, res); + ext_emu->leave_namespace(); }); svr.Post("/Testconfig/(.+)", [&](const Request &req, Response &res) { /*post*/ ext_emu->enter_namespace("/var/run/netns/default"); ext_emu->agent_endpoint_testconfig(req, res); + ext_emu->leave_namespace(); }); // switch_to_namespace("/var/run/netns/ots", &original_ns_fd); diff --git a/src/external_agent_cci/wlan_ext_emu_tests.cpp b/src/external_agent_cci/wlan_ext_emu_tests.cpp index 27a2195..95e4c78 100644 --- a/src/external_agent_cci/wlan_ext_emu_tests.cpp +++ b/src/external_agent_cci/wlan_ext_emu_tests.cpp @@ -286,7 +286,6 @@ void *wlan_ext_emu_tests_t::test_function(void *arg) temp_step = test->get_ext_step_from_index(step_count); if (temp_step == NULL) { ext_emu->ext_emu_send_signal_fail(); - test->test_stop(); pthread_mutex_unlock(&test->m_lock); pthread_exit(NULL); return NULL; @@ -316,7 +315,6 @@ void *wlan_ext_emu_tests_t::test_function(void *arg) __LINE__, steps_status_json_str_src); cJSON_free(steps_status_json_str_src); ext_emu->ext_emu_send_signal_fail(); - test->test_stop(); cJSON_free(agent_status); pthread_mutex_unlock(&test->m_lock); pthread_exit(NULL); From 8819c5509da30a36bc40c8a062cb29e8a1679489 Mon Sep 17 00:00:00 2001 From: Pavithra Sundaravadivel Date: Tue, 10 Mar 2026 07:18:26 +0000 Subject: [PATCH 4/5] RDKB-63856 Fix leaks in BPI Impacted Platforms: All RDKB Platforms Reason for change: Closing the FD's proper once process done. Test Procedure: Run PR0270 test case and check the open fd's via proc Risks: None Priority: P1 Signed-off-by:Pavithra_Sundaravadivel@comcast.com --- src/external_agent_cci/wlan_ext_emu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/external_agent_cci/wlan_ext_emu.cpp b/src/external_agent_cci/wlan_ext_emu.cpp index c3b60df..965a389 100644 --- a/src/external_agent_cci/wlan_ext_emu.cpp +++ b/src/external_agent_cci/wlan_ext_emu.cpp @@ -859,6 +859,7 @@ void *wlan_ext_emu_t::http_server_handler(void *arg) // switch_to_namespace("/var/run/netns/ots", &original_ns_fd); ext_emu->enter_namespace("/var/run/netns/ots"); svr.listen("0.0.0.0", 1234); + ext_emu->leave_namespace(); return NULL; } From 386fbcb53bfd5dfda159994f3bb6a3bf06a49675 Mon Sep 17 00:00:00 2001 From: Pavithra Sundaravadivel Date: Tue, 10 Mar 2026 07:42:47 +0000 Subject: [PATCH 5/5] RDKB-63856 Fix leaks in BPI --- src/sta/wlan_emu_ext_sta_mgr.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/sta/wlan_emu_ext_sta_mgr.cpp b/src/sta/wlan_emu_ext_sta_mgr.cpp index 80b2406..5c169e7 100644 --- a/src/sta/wlan_emu_ext_sta_mgr.cpp +++ b/src/sta/wlan_emu_ext_sta_mgr.cpp @@ -191,7 +191,6 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, wlan_emu_print(wlan_emu_log_level_err, "%s:%d: Failed to get external agent status\n", __func__, __LINE__); if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { - step->m_ui_mgr->cci_error_code = EEXTAGENT; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); } @@ -216,7 +215,6 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, wlan_emu_print(wlan_emu_log_level_err, "%s:%d: fopen failed for %s\n", __func__, __LINE__, eth_connect_info); if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { - step->m_ui_mgr->cci_error_code = EEXTAGENT; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); } @@ -227,7 +225,6 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, wlan_emu_print(wlan_emu_log_level_err, "%s:%d: fwrite failed\n", __func__, __LINE__); fclose(fp); if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { - step->m_ui_mgr->cci_error_code = EEXTAGENT; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); } @@ -241,7 +238,6 @@ int wlan_emu_ext_sta_mgr_t::add_eth_lan_device(test_step_params_t *step, wlan_emu_print(wlan_emu_log_level_err, "%s:%d: http_post_file failed : %d\n", __func__, __LINE__, status_code); if (ext_agent->send_external_agent_stop_command() != RETURN_OK) { - step->m_ui_mgr->cci_error_code = EEXTAGENT; wlan_emu_print(wlan_emu_log_level_err, "%s:%d: failed to send external agent stop command\n", __func__, __LINE__); }