]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
only one response get options
authorBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 13:00:19 +0000 (14:00 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 13:00:19 +0000 (14:00 +0100)
src/kds_s2000w_handler.c

index b2296ba12e71f3f8d223fe8819ba275ec98bac91..f6f1d7c9500a9eb7a9ff8ec05e548f565dd9f5ef 100644 (file)
@@ -7,7 +7,9 @@
 #include "kds_s2000w_handler.h"
 #include "kds_s2000w_client.h"
 
-current_state* state;
+current_state* state = NULL;
+json_object* resObj = NULL;
+json_object* config = NULL;
 
 void _write_string_value(json_object* value_object, void* value)
 {
@@ -69,6 +71,8 @@ void kds_s2000w_handler_close()
        state->sessionid = 0;
        free(state);
        state = NULL;
+       json_object_put(resObj);
+       resObj = NULL;
 }
 
 current_state* kds_s2000w_handler_current_state()
@@ -78,20 +82,24 @@ current_state* kds_s2000w_handler_current_state()
 
 void kds_s2000w_handler_get_option(int option, void* value)
 {
-       response* resp = kds_s2000w_client_response_init();
-       int result = kds_s2000w_client_get_option(state->sessionid, resp);
-       json_object* resObj = json_tokener_parse(resp->data);
-       json_object* config = json_object_object_get(resObj, "Configuration");
+       if (option == 0) {
+               response* resp = kds_s2000w_client_response_init();
+               int result = kds_s2000w_client_get_option(state->sessionid, resp);
+               resObj = json_tokener_parse(resp->data);
+               config = json_object_object_get(resObj, "Configuration");
+
+               if (result != 0 || resp->code == 404) {
+                       kds_s2000w_client_response_free(resp);
+                       resp = NULL;
+                       json_object_put(resObj);
+                       resObj = NULL;
+                       return;
+               }
 
-       if (result != 0 || resp->code == 404) {
                kds_s2000w_client_response_free(resp);
                resp = NULL;
-               json_object_put(resObj);
-               resObj = NULL;
-               return;
        }
 
-
        json_object* value_object = NULL;
        switch(option) {
                case 0:
@@ -189,11 +197,6 @@ void kds_s2000w_handler_get_option(int option, void* value)
                default:
                        break;
        }
-
-       kds_s2000w_client_response_free(resp);
-       resp = NULL;
-       json_object_put(resObj);
-       resObj = NULL;
 }
 
 void kds_s2000w_handler_set_option(int option, void* value)