Add a result code to Url reacher signal 06/202406/7 accepted/tizen/unified/20190405.015731 submit/tizen/20190404.012313
authorYu <jiung.yu@samsung.com>
Thu, 28 Mar 2019 05:59:38 +0000 (14:59 +0900)
committerYu <jiung.yu@samsung.com>
Mon, 1 Apr 2019 23:57:41 +0000 (08:57 +0900)
Change-Id: I9cb5480d1f98811ea243e5799c54b355c04b3180
Signed-off-by: Yu Jiung <jiung.yu@samsung.com>
include/inm-gdbus.h
include/inm-reacher.h
packaging/inm-manager.spec
src/inm-gdbus.c
src/inm-manager.c
src/inm-reacher.c
test/inm-test.c

index d90462424e8bd126836cb343d41f539683007f5a..41838c338c6f5997986bf0e698d4601e8a2ddd9d 100644 (file)
@@ -148,7 +148,9 @@ gboolean inm_gdbus_emit_signal(const gchar *destination_bus_name,
 void inm_gdbus_emit_ip_conflicted(int state, gchar *if_name, gchar *ip);
 void inm_gdbus_emit_arp_request_result(gboolean found, gchar *ip);
 void inm_gdbus_emit_gateway_check_result(gboolean found, gchar *ip);
-void inm_gdbus_emit_reacher_result(gboolean found, const gchar *url);
+void inm_gdbus_emit_reacher_result(int error_code,
+               gboolean found,
+               const gchar *url);
 void inm_gdbus_emit_default_dns_lookup_result(gboolean found, const gchar *host_name);
 void inm_gdbus_emit_ethernet_cable_state(gboolean state);
 void inm_gdbus_emit_wifi_module_state(gboolean state);
index 6cbb91ce9e42783f6797b5be4e6c787b705c31ad..c4ac7103d075ec6209b9457551d52e1987650359 100644 (file)
@@ -43,9 +43,19 @@ typedef enum {
        INM_REACHER_ERROR_DNS_NOT_RESOLVED,
        INM_REACHER_ERROR_TIMEOUT,
        INM_REACHER_ERROR_CURL,
-
 } inm_reacher_error_e;
 
+typedef enum {
+       INM_REACHER_URL_RESULT_SUCCESS,
+       INM_REACHER_URL_RESULT_ERROR_MALFORMED_URL,
+       INM_REACHER_URL_RESULT_ERROR_DNS_RESOLVE,
+       INM_REACHER_URL_RESULT_ERROR_TCP_CONNECT,
+       INM_REACHER_URL_RESULT_ERROR_SSL,
+       INM_REACHER_URL_RESULT_ERROR_HTTP,
+       INM_REACHER_URL_RESULT_ERROR_FILE_NOT_FOUND,
+       INM_REACHER_URL_RESULT_ERROR_UNKNOWN = 255,
+} inm_reacher_url_result_e;
+
 typedef enum {
        INM_REACHER_CHECK_DEFAULT_URLS,
        INM_REACHER_CHECK_USER_URLS,
@@ -65,7 +75,7 @@ int inm_reacher_get_speed(const char *url, double *speed);
 */
 
 typedef void (*reacher_callback) (
-               inm_reacher_error_e err,
+               inm_reacher_url_result_e result,
                gboolean found,
                const char *url,
                gpointer user_data);
index 4135667536e1447c481b935124af4e98aa5056ab..0b71c90d64429d5014b30a0693df5311ad613875 100644 (file)
@@ -1,6 +1,6 @@
 Name:       inm-manager
 Summary:    INM(Intelligent Network Monitoring) daemon
-Version:    0.0.21
+Version:    0.0.22
 Release:    1
 Group:      Network & Connectivity/Other
 License:    Apache-2.0
index cde5ec6b49e0c8cebd28757b5043cb598dbc18d1..9d28d25a25d4d34b239d9af13d2ae320b9438a8c 100644 (file)
@@ -1162,13 +1162,16 @@ void inm_gdbus_emit_gateway_check_result(gboolean found, gchar *ip)
        __INM_FUNC_EXIT__;
 }
 
-void inm_gdbus_emit_reacher_result(gboolean found, const gchar *url)
+void inm_gdbus_emit_reacher_result(int error_code,
+               gboolean found,
+               const gchar *url)
 {
        GVariantBuilder *builder = NULL;
 
        __INM_FUNC_ENTER__;
 
        builder = g_variant_builder_new(G_VARIANT_TYPE_ARRAY);
+       g_variant_builder_add(builder, "{sv}", "UrlError", g_variant_new_int32(error_code));
        g_variant_builder_add(builder, "{sv}", "Found", g_variant_new_boolean(found));
        g_variant_builder_add(builder, "{sv}", "Url", g_variant_new_string(url));
 
index 7759af9a476cd4300f0366c0386c3ae15652a6e9..87d2284d3d0f5970ada94943e387e7fd46fe4bc0 100644 (file)
@@ -487,7 +487,7 @@ int inm_manager_remove_url_to_check(const char *url)
 }
 
 static void __reacher_callback(
-               inm_reacher_error_e err,
+               inm_reacher_url_result_e result,
                gboolean found,
                const char *url,
                gpointer user_data)
@@ -496,7 +496,7 @@ static void __reacher_callback(
                return;
 
        PRINT_LOG("<URL %s:%s>", url, found ? "Found" : "Not Found");
-       inm_gdbus_emit_reacher_result(found, url);
+       inm_gdbus_emit_reacher_result(result, found, url);
 
        return;
 }
index bd2a1042dd544ff54085a779e5e959876676be2a..008e6490c89516bc243b4660ae888a9ae7b7adbd 100644 (file)
@@ -367,6 +367,50 @@ static inline void __check_next(reacher_data_s *reacher)
        return;
 }
 
+static inline inm_reacher_url_result_e __translate_curl_code_to_url_result(CURLcode code)
+{
+       inm_reacher_url_result_e result;
+
+       switch (code) {
+       case CURLE_OK:
+               result = INM_REACHER_URL_RESULT_SUCCESS;
+               break;
+       case CURLE_URL_MALFORMAT:
+               result = INM_REACHER_URL_RESULT_ERROR_MALFORMED_URL;
+               break;
+       case CURLE_COULDNT_RESOLVE_PROXY:
+       case CURLE_COULDNT_RESOLVE_HOST:
+               result = INM_REACHER_URL_RESULT_ERROR_DNS_RESOLVE;
+               break;
+       case CURLE_COULDNT_CONNECT:
+               result = INM_REACHER_URL_RESULT_ERROR_TCP_CONNECT;
+               break;
+       case CURLE_SSL_CONNECT_ERROR:
+       case CURLE_SSL_ENGINE_NOTFOUND:
+       case CURLE_SSL_ENGINE_SETFAILED:
+       case CURLE_SSL_CERTPROBLEM:
+       case CURLE_SSL_CIPHER:
+       case CURLE_PEER_FAILED_VERIFICATION:
+       case CURLE_SSL_ENGINE_INITFAILED:
+       case CURLE_SSL_CACERT_BADFILE:
+       case CURLE_SSL_SHUTDOWN_FAILED:
+       case CURLE_SSL_CRL_BADFILE:
+       case CURLE_SSL_ISSUER_ERROR:
+               result = INM_REACHER_URL_RESULT_ERROR_SSL;
+               break;
+       case CURLE_HTTP_RETURNED_ERROR:
+               result = INM_REACHER_URL_RESULT_ERROR_HTTP;
+               break;
+       case CURLE_REMOTE_FILE_NOT_FOUND:
+               result = INM_REACHER_URL_RESULT_ERROR_FILE_NOT_FOUND;
+               break;
+       default:
+               result = INM_REACHER_URL_RESULT_ERROR_UNKNOWN;
+               break;
+       }
+       return result;
+}
+
 /* Check for completed transfers, and remove their easy handles */
 static void __check_multi_info(reacher_data_s *reacher)
 {
@@ -390,8 +434,8 @@ static void __check_multi_info(reacher_data_s *reacher)
 
                INM_LOGI("DONE: %s => (%d) %s", eff_url, ret, conn->error);
                if (reacher->cb)
-                       reacher->cb(INM_REACHER_ERROR_NONE,
-                                       TRUE,
+                       reacher->cb(__translate_curl_code_to_url_result(ret),
+                                       ret == CURLE_OK ? TRUE : FALSE,
                                        conn->url,
                                        reacher->cb_user_data);
                __destroy_conn(conn);
index 30cb9c4417ae34298e4a8216ec7118854848eaca..3f0429a9034691beda7692728534d1addf723026 100644 (file)
@@ -87,7 +87,6 @@ enum {
 
        CMD_CONNMAN_INIT,
        CMD_CONNMAN_DEINIT,
-       CMD_CONNMAN_MGR_GET_PROPERTIES,
        CMD_CONNMAN_MGR_GET_SERVICES,
        CMD_CONNMAN_MGR_GET_TECHNOLOGIES,
 
@@ -189,7 +188,6 @@ menu_str_t g_menu_str[] = {
 
                {CMD_CONNMAN_INIT, "CMD_CONNMAN_INIT"},
                {CMD_CONNMAN_DEINIT, "CMD_CONNMAN_DEINIT"},
-               {CMD_CONNMAN_MGR_GET_PROPERTIES, "CMD_CONNMAN_MGR_GET_PROPERTIES"},
                {CMD_CONNMAN_MGR_GET_SERVICES, "CMD_CONNMAN_MGR_GET_SERVICES"},
                {CMD_CONNMAN_MGR_GET_TECHNOLOGIES, "CMD_CONNMAN_MGR_GET_TECHNOLOGIES"},
 
@@ -1636,7 +1634,7 @@ void test_inm_reacher_remove_url()
 }
 
 static void __reacher_callback(
-               inm_reacher_error_e err,
+               inm_reacher_url_result_e err,
                gboolean found,
                const char *url,
                gpointer user_data)