From bb77123e03d216d88e84f2285463c7417f275609 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 28 Mar 2024 18:51:37 +0100 Subject: [PATCH] cancel with recreate session --- src/kds_s2000w_handler.c | 29 ----------------------------- src/kds_s2000w_net.c | 2 ++ tests/kds_s2000w_net_read_tests.c | 21 ++++++++++++++++++++- 3 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index a54c234..ef0cb57 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -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); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index e940e75..51a979f 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -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; } diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index 7679f08..f1d9f31 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -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; } -- 2.39.5