Return error if cancel is called before the command is not done
authorCheoleun Moon <chleun.moon@samsung.com>
Tue, 18 Feb 2020 10:07:54 +0000 (19:07 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Tue, 18 Feb 2020 10:07:54 +0000 (19:07 +0900)
src/wifi-aware-private.c

index db0328c..596cc73 100644 (file)
@@ -250,6 +250,13 @@ static void __add_published_callback(wifi_aware_publish_h publish,
     handle->published_cb_data = user_data;
 }
 
+static int __is_published(wifi_aware_publish_h publish)
+{
+       RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
+       wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       return handle->publish_id > 0;
+}
+
 static void __wifi_aware_publish_set_id(wifi_aware_publish_h publish, unsigned int publish_id)
 {
        RET_IF(publish == NULL, "wifi_aware_publish_h is NULL");
@@ -305,6 +312,13 @@ static void __add_subscribed_callback(wifi_aware_subscribe_h subscribe,
     handle->subscribed_cb_data = user_data;
 }
 
+static int __is_subscribed(wifi_aware_subscribe_h subscribe)
+{
+       RET_IF(subscribe == NULL, "wifi_aware_subscribe_h is NULL");
+       wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       return handle->subscribe_id > 0;
+}
+
 static void __wifi_aware_subscribe_invoke_callback(wifi_aware_error_e error, wifi_aware_subscribe_h subscribe)
 {
        RET_IF(subscribe == NULL, "wifi_aware_subscribe_h is NULL");
@@ -461,6 +475,7 @@ int _wifi_aware_publish_handle_create(wifi_aware_h wifi_aware, wifi_aware_publis
 void _wifi_aware_publish_request_set_default_values(wifi_aware_publish_h publish)
 {
     wifi_aware_publish_s *handle = (wifi_aware_publish_s *)publish;
+       handle->publish_id = 0;
        handle->req.ttl = 0;
        handle->req.publish_type = WIFI_AWARE_PUBLISH_TYPE_UNSOLICITED;
        //memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
@@ -547,6 +562,13 @@ int _wifi_aware_publish_request(wifi_aware_publish_h publish,
 
 int _wifi_aware_cancel_publish_request(wifi_aware_publish_h publish)
 {
+       RET_VAL_IF(publish == NULL, 0, "wifi_aware_publish_h is NULL");
+
+       if (!__is_published(publish)) {
+               WIFI_AWARE_LOGE("The publish is not done yet");
+               return WIFI_AWARE_ERROR_INVALID_OPERATION;
+       }
+
        return wifi_aware_gdbus_cancel_publish(publish,
                        __get_client_id_with_publish(publish));
 }
@@ -579,6 +601,7 @@ void _wifi_aware_subscribe_set_default_values(
                wifi_aware_subscribe_h subscribe)
 {
     wifi_aware_subscribe_s *handle = (wifi_aware_subscribe_s *)subscribe;
+       handle->subscribe_id = 0;
        handle->req.ttl = 0;
        handle->req.subscribe_type = WIFI_AWARE_SUBSCRIBE_TYPE_PASSIVE;
        //memset(req->specific_info[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN], 0, WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN);
@@ -642,6 +665,8 @@ unsigned int _wifi_aware_subscribe_get_id(wifi_aware_subscribe_h subscribe)
 int _wifi_aware_subscribe_request(wifi_aware_subscribe_h subscribe,
                wifi_aware_subscribed_cb callback, void *user_data)
 {
+       RET_VAL_IF(subscribe == NULL, 0, "wifi_aware_subscribe_h is NULL");
+
        __add_subscribed_callback(subscribe, callback, user_data);
 
        return wifi_aware_gdbus_subscribe(subscribe,
@@ -651,6 +676,13 @@ int _wifi_aware_subscribe_request(wifi_aware_subscribe_h subscribe,
 
 int _wifi_aware_cancel_subscribe_request(wifi_aware_subscribe_h subscribe)
 {
+       RET_VAL_IF(subscribe == NULL, 0, "wifi_aware_subscribe_h is NULL");
+
+       if (!__is_subscribed(subscribe)) {
+               WIFI_AWARE_LOGE("The subscribe is not done yet");
+               return WIFI_AWARE_ERROR_INVALID_OPERATION;
+       }
+
        return wifi_aware_gdbus_cancel_subscribe(subscribe,
                        __get_client_id_with_subscribe(subscribe));
 }
@@ -658,6 +690,8 @@ int _wifi_aware_cancel_subscribe_request(wifi_aware_subscribe_h subscribe)
 int _wifi_aware_update_subscribe_request(wifi_aware_subscribe_h subscribe,
                wifi_aware_subscribed_cb callback, void *user_data)
 {
+       RET_VAL_IF(subscribe == NULL, 0, "wifi_aware_subscribe_h is NULL");
+
        __add_subscribed_callback(subscribe, callback, user_data);
 
        return wifi_aware_gdbus_update_subscribe(subscribe,