projects
/
metaproxy-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix Metaproxy stops logging after check config failed MP-590
[metaproxy-moved-to-github.git]
/
src
/
filter_session_shared.cpp
diff --git
a/src/filter_session_shared.cpp
b/src/filter_session_shared.cpp
index
d14dc1b
..
099b47f
100644
(file)
--- a/
src/filter_session_shared.cpp
+++ b/
src/filter_session_shared.cpp
@@
-305,27
+305,29
@@
void yf::SessionShared::BackendClass::release_backend(BackendInstancePtr b)
void yf::SessionShared::BackendClass::remove_backend(BackendInstancePtr b)
{
void yf::SessionShared::BackendClass::remove_backend(BackendInstancePtr b)
{
- BackendInstanceList::iterator it = m_backend_list.begin();
-
- while (it != m_backend_list.end())
{
{
- if (*it == b)
+ boost::mutex::scoped_lock lock(m_mutex_backend_class);
+ BackendInstanceList::iterator it = m_backend_list.begin();
+ for (;;)
{
{
- mp::odr odr;
- (*it)->m_close_package->response() = odr.create_close(
- 0, Z_Close_lackOfActivity, 0);
- (*it)->m_close_package->session().close();
- (*it)->m_close_package->move();
-
- it = m_backend_list.erase(it);
- }
- else
+ if (it == m_backend_list.end())
+ return;
+ if (*it == b)
+ {
+ it = m_backend_list.erase(it);
+ break;
+ }
it++;
it++;
+ }
}
}
+ mp::odr odr;
+ b->m_close_package->response() = odr.create_close(
+ 0, Z_Close_lackOfActivity, 0);
+ b->m_close_package->session().close();
+ b->m_close_package->move();
}
}
-
yf::SessionShared::BackendInstancePtr
yf::SessionShared::BackendClass::get_backend(
const mp::Package &frontend_package)
yf::SessionShared::BackendInstancePtr
yf::SessionShared::BackendClass::get_backend(
const mp::Package &frontend_package)
@@
-369,6
+371,14
@@
void yf::SessionShared::BackendInstance::timestamp()
yf::SessionShared::BackendInstance::~BackendInstance()
{
yf::SessionShared::BackendInstance::~BackendInstance()
{
+ if (m_close_package)
+ {
+ mp::odr odr;
+ m_close_package->response() = odr.create_close(
+ 0, Z_Close_lackOfActivity, 0);
+ m_close_package->session().close();
+ m_close_package->move();
+ }
delete m_close_package;
}
delete m_close_package;
}
@@
-1214,12
+1224,6
@@
bool yf::SessionShared::BackendClass::expire_instances()
}
else if (now < last_use || now - last_use > m_backend_expiry_ttl)
{
}
else if (now < last_use || now - last_use > m_backend_expiry_ttl)
{
- mp::odr odr;
- (*bit)->m_close_package->response() = odr.create_close(
- 0, Z_Close_lackOfActivity, 0);
- (*bit)->m_close_package->session().close();
- (*bit)->m_close_package->move();
-
bit = m_backend_list.erase(bit);
}
else
bit = m_backend_list.erase(bit);
}
else