]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
cancel with recreate session
authorBastian Dehn <hhaalo@arcor.de>
Thu, 28 Mar 2024 17:51:37 +0000 (18:51 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 28 Mar 2024 17:51:37 +0000 (18:51 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_net.c
tests/kds_s2000w_net_read_tests.c

index a54c234614a3d46b351d0a43e58fef7e9c0d7b9d..ef0cb579923446b0cbe6194df37ac532bfbf7241 100644 (file)
@@ -224,35 +224,6 @@ void free_handler(handler* h)
        h = NULL;
 }
 
-void reset_handler(handler* h)
-{
-       debug_printf(ALL, "reset handler");
-       free(h->pnm_image->data);
-       h->pnm_image->data = NULL;
-       free(h->jpg_image->data);
-       h->jpg_image->data = NULL;
-
-       h->state = NOTCONNECTED;
-       h->current_scan_status->current_image_number = 1;
-       h->current_scan_status->available_images = 0;
-       h->current_scan_status->downloaded_images = 0;
-       h->current_scan_status->complete_scanned = 0;
-       h->current_metadata->format = 1;
-       h->current_metadata->channels = 3;
-       h->current_metadata->is_last = 1;
-       h->current_metadata->bytes_per_line = 0;
-       h->current_metadata->pixels_per_line = 0;
-       h->current_metadata->lines = 0;
-       h->current_metadata->depth = 8;
-       h->current_metadata->valid = 0;
-       h->current_metadata->scanned_all_complete = 0;
-       h->read_info->scan_started = 0;
-       h->read_info->cancel = 0;
-       h->read_info->read_size = 0;
-       h->read_info->readed_bytes_per_line = 0;
-       h->read_info->readed_lines = 0;
-}
-
 void kds_s2000w_handler_recreate_session(handler* h)
 {
        kds_s2000w_client_close_session(h->sessionid);
index e940e75ab2ce1059901d88bab98314a3c874566b..51a979fdfaaf55cf73717ec67b625393733be931 100644 (file)
@@ -206,6 +206,8 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
        // cancel
        if (h->read_info->cancel) {
                *length = 0;
+               h->read_info->cancel = 0;
+               kds_s2000w_handler_recreate_session(h);
                return SANE_STATUS_CANCELLED;
        }
 
index 7679f0874a8e1bdb06f0e54cfec06b998c5c146a..f1d9f31189a9384144834edcd128823e70610e67 100644 (file)
@@ -26,14 +26,33 @@ void sane_kds_s2000w_net_read_cancel_test()
        h->read_info->cancel = 1;
        int* length = malloc(sizeof(int));
        *length = 0;
+       response* resp_open_session = kds_s2000w_client_response_init();
+       resp_open_session->data = realloc(resp_open_session->data, 25);
+       const char* session_data = "{\"SessionId\":\"8154711\"}\0";
+       memcpy(resp_open_session->data, session_data, 25);
+       resp_open_session->code = 200;
+       resp_open_session->size = 25;
+       will_return(mock_response, resp_open_session);
+       will_return(__wrap_kds_s2000w_client_open_session, 0);
+       response* resp_set_option = kds_s2000w_client_response_init();
+       resp_set_option->code = 200;
+       will_return(mock_response, resp_set_option);
+       will_return(__wrap_kds_s2000w_client_set_option, 0);
+       expect_function_call(__wrap_kds_s2000w_client_close_session);
+       expect_function_call(__wrap_kds_s2000w_client_open_session);
+       expect_function_call(__wrap_kds_s2000w_client_set_option);
 
        SANE_Status status = _sane_kds_s2000w_net_read(h, NULL, 0, length);
 
-       assert_int_equal(h->read_info->cancel, 1);
+       assert_int_equal(h->read_info->cancel, 0);
        assert_int_equal(status, SANE_STATUS_CANCELLED);
 
        free(length);
        length = NULL;
+       kds_s2000w_client_response_free(resp_open_session);
+       resp_open_session = NULL;
+       kds_s2000w_client_response_free(resp_set_option);
+       resp_set_option = NULL;
        free_handler(h);
        h = NULL;
 }