Fix crash in log filter when record syntax is omitted MP-613
[metaproxy-moved-to-github.git] / src / filter_session_shared.cpp
index 1ecc6f3..5fbec9c 100644 (file)
@@ -128,6 +128,8 @@ namespace metaproxy_1 {
             bool expire_instances();
             yazpp_1::GDU m_init_request;
             yazpp_1::GDU m_init_response;
+            boost::mutex m_mutex_backend_class;
+            boost::condition m_cond_set_ready;
             int m_sequence_top;
             time_t m_backend_set_ttl;
             time_t m_backend_expiry_ttl;
@@ -138,8 +140,6 @@ namespace metaproxy_1 {
             int m_no_succeeded;
             int m_no_init;
         public:
-            boost::mutex m_mutex_backend_class;
-            boost::condition m_cond_set_ready;
             BackendClass(const yazpp_1::GDU &init_request,
                          int resultset_ttl,
                          int resultset_max,
@@ -479,6 +479,7 @@ yf::SessionShared::BackendInstancePtr yf::SessionShared::BackendClass::create_ba
         init_package.move();
     }
     m_no_failed++;
+    m_cond_set_ready.notify_all();
     return null;
 }
 
@@ -879,7 +880,6 @@ restart:
 
     found_set = new_set;
     found_set->timestamp();
-    found_backend->m_sets.push_back(found_set);
 
     Z_Records *z_records = 0;
 
@@ -946,6 +946,7 @@ restart:
                 package.response() = f_apdu;
             }
             bc->release_backend(found_backend);
+            found_set.reset();
             return; // search error
         }
     }
@@ -957,12 +958,7 @@ restart:
         found_backend.reset();
         goto restart;
     }
-
-#if 0
-    found_set = new_set;
-    found_set->timestamp();
     found_backend->m_sets.push_back(found_set);
-#endif
 }
 
 int yf::SessionShared::Frontend::result_set_ref(ODR o,