X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffilter_session_shared.cpp;h=57b7337d13bf0933c3016bbdbfd026fe17326f6a;hb=67345bf565259ce40259abbae89f98907369e645;hp=b7e5235a0ed0f5f4e23b0d47f3752b391cd4b050;hpb=e7d3c4b2cfc01bb6f0c101c8106f3118c4222e28;p=metaproxy-moved-to-github.git diff --git a/src/filter_session_shared.cpp b/src/filter_session_shared.cpp index b7e5235..57b7337 100644 --- a/src/filter_session_shared.cpp +++ b/src/filter_session_shared.cpp @@ -629,6 +629,9 @@ void yf::SessionShared::Frontend::get_set(mp::Package &package, BackendInstancePtr &found_backend, BackendSetPtr &found_set) { + bool session_restarted = false; + +restart: std::string result_set_id; BackendClassPtr bc = m_backend_class; { @@ -709,6 +712,14 @@ void yf::SessionShared::Frontend::get_set(mp::Package &package, bc->release_backend(found_backend); return; // search error } + if (!session_restarted && new_set->m_result_set_size < 0) + { + bc->remove_backend(found_backend); + session_restarted = true; + found_backend.reset(); + goto restart; + } + found_set = new_set; found_set->timestamp(); found_backend->m_sets.push_back(found_set);