return _dnssd_browse_service(service_type, interface, 0, browser, found_cb, user_data);
}
+static int __get_valid_browsing_handle(dnssd_service_h dnssd_service, dnssd_handle_s **handle)
+{
+ dnssd_handle_s *local_handle;
+
+ CHECK_INITIALIZED();
+
+ local_handle = __dnssd_get_struct_from_handle(dnssd_service);
+ if (local_handle == NULL) {
+ DNSSD_LOGD("Service Handler not found");
+ __DNSSD_LOG_FUNC_EXIT__;
+ return DNSSD_ERROR_SERVICE_NOT_FOUND;
+ }
+
+ if (local_handle->op_type != DNSSD_TYPE_BROWSE) {
+ DNSSD_LOGD("DNSSD service is not a local service");
+ __DNSSD_LOG_FUNC_EXIT__;
+ return DNSSD_ERROR_SERVICE_NOT_FOUND;
+ }
+
+ if (local_handle->sd_ref == NULL) {
+ DNSSD_LOGE("Invalid DNS SD Client"); //LCOV_EXCL_LINE
+ __DNSSD_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return DNSSD_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
+ }
+
+ *handle = local_handle;
+
+ return DNSSD_ERROR_NONE;
+}
+
+void __destroy_browsing_handle(dnssd_handle_s *browsing_handle)
+{
+ if (browsing_handle->watch_id > 0)
+ g_source_remove(browsing_handle->watch_id);
+
+ DNSServiceRefDeallocate(browsing_handle->sd_ref);
+ browsing_handle->sd_ref = NULL;
+
+ dnssd_handle_list = g_slist_remove(dnssd_handle_list, browsing_handle);
+ g_free(browsing_handle->service_type);
+ g_free(browsing_handle);
+ DNSSD_LOGD("g_slist length [%d]", g_slist_length(dnssd_handle_list));
+
+ return;
+}
+
EXPORT_API int dnssd_cancel_browse_service(dnssd_browser_h browser)
{
+ __DNSSD_LOG_FUNC_ENTER__;
+ dnssd_handle_s *local_handle;
+ int res;
+
+ CHECK_FEATURE_SUPPORTED(NETWORK_SERVICE_DISCOVERY_FEATURE);
+ DNSSD_LOCK;
+
+ res = __get_valid_browsing_handle(browser, &local_handle);
+ if (res != DNSSD_ERROR_NONE) {
+ DNSSD_UNLOCK;
+ return res;
+ }
+
+ __destroy_browsing_handle(local_handle);
+
+ DNSSD_UNLOCK;
+ __DNSSD_LOG_FUNC_EXIT__;
return DNSSD_ERROR_NONE;
}
return DNSSD_ERROR_NONE;
}
-static int __get_valid_browsing_handle(dnssd_service_h dnssd_service, dnssd_handle_s **handle)
-{
- dnssd_handle_s *local_handle;
-
- CHECK_INITIALIZED();
-
- local_handle = __dnssd_get_struct_from_handle(dnssd_service);
- if (local_handle == NULL) {
- DNSSD_LOGD("Service Handler not found");
- __DNSSD_LOG_FUNC_EXIT__;
- return DNSSD_ERROR_SERVICE_NOT_FOUND;
- }
-
- if (local_handle->op_type != DNSSD_TYPE_BROWSE) {
- DNSSD_LOGD("DNSSD service is not a local service");
- __DNSSD_LOG_FUNC_EXIT__;
- return DNSSD_ERROR_SERVICE_NOT_FOUND;
- }
-
- if (local_handle->sd_ref == NULL) {
- DNSSD_LOGE("Invalid DNS SD Client"); //LCOV_EXCL_LINE
- __DNSSD_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
- return DNSSD_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
- }
-
- *handle = local_handle;
-
- return DNSSD_ERROR_NONE;
-}
-
static void __dnssd_remove_found_service(gpointer data, gpointer user_data)
{
__DNSSD_LOG_FUNC_ENTER__;
return;
}
-void __destroy_browsing_handle(dnssd_handle_s *browsing_handle)
-{
- if (browsing_handle->watch_id > 0)
- g_source_remove(browsing_handle->watch_id);
-
- DNSServiceRefDeallocate(browsing_handle->sd_ref);
- browsing_handle->sd_ref = NULL;
-
- dnssd_handle_list = g_slist_remove(dnssd_handle_list, browsing_handle);
- g_free(browsing_handle->service_type);
- g_free(browsing_handle);
- DNSSD_LOGD("g_slist length [%d]", g_slist_length(dnssd_handle_list));
-
- return;
-}
-
EXPORT_API int dnssd_stop_browsing_service(dnssd_browser_h dnssd_service)
{
__DNSSD_LOG_FUNC_ENTER__;