diff options
author | Werner Koch <wk@gnupg.org> | 2019-09-09 14:25:02 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2019-09-09 14:25:02 +0200 |
commit | 5e00c1773d8fd44ba95b39a48e12b0ec94ac8cbe (patch) | |
tree | fa065eec73cff6cc94aeb26a2ac2cc4b19d4ac42 /kbx | |
parent | kbx: Allow searching from start. (diff) | |
download | gnupg2-5e00c1773d8fd44ba95b39a48e12b0ec94ac8cbe.tar.xz gnupg2-5e00c1773d8fd44ba95b39a48e12b0ec94ac8cbe.zip |
kbx: Fix keyboxd search first.
* kbx/kbxserver.c (cmd_next): Switch to mode next if needed.
--
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'kbx')
-rw-r--r-- | kbx/kbxserver.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/kbx/kbxserver.c b/kbx/kbxserver.c index a54444178..df110b301 100644 --- a/kbx/kbxserver.c +++ b/kbx/kbxserver.c @@ -352,10 +352,24 @@ cmd_next (assuan_context_t ctx, char *line) ctrl->no_data_return = opt_no_data; if (ctrl->server_local->multi_search_desc_len) - err = kbxd_search (ctrl, ctrl->server_local->multi_search_desc, - ctrl->server_local->multi_search_desc_len, 0); + { + /* The next condition should never be tru but we better handle + * the first/next transition anyway. */ + if (ctrl->server_local->multi_search_desc[0].mode + == KEYDB_SEARCH_MODE_FIRST) + ctrl->server_local->multi_search_desc[0].mode = KEYDB_SEARCH_MODE_NEXT; + + err = kbxd_search (ctrl, ctrl->server_local->multi_search_desc, + ctrl->server_local->multi_search_desc_len, 0); + } else - err = kbxd_search (ctrl, &ctrl->server_local->search_desc, 1, 0); + { + /* We need to do the transition from first to next here. */ + if (ctrl->server_local->search_desc.mode == KEYDB_SEARCH_MODE_FIRST) + ctrl->server_local->search_desc.mode = KEYDB_SEARCH_MODE_NEXT; + + err = kbxd_search (ctrl, &ctrl->server_local->search_desc, 1, 0); + } if (err) goto leave; |