Author: eallen Date: Wed Jun 10 17:11:49 2015 New Revision: 1684716 URL: http://svn.apache.org/r1684716 Log: QPID-6297: Python client should reconnect after network glitch
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp qpid/trunk/qpid/python/qpid/messaging/driver.py Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp?rev=1684716&r1=1684715&r2=1684716&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/broker/SessionManager.cpp Wed Jun 10 17:11:49 2015 @@ -47,11 +47,11 @@ SessionManager::~SessionManager() { detached.clear(); // Must clear before destructor as session dtor will call forget() } -std::auto_ptr<SessionState> SessionManager::attach(SessionHandler& h, const SessionId& id, bool/*force*/) { +std::auto_ptr<SessionState> SessionManager::attach(SessionHandler& h, const SessionId& id, bool force) { Mutex::ScopedLock l(lock); eraseExpired(); // Clean up expired table std::pair<Attached::iterator, bool> insert = attached.insert(id); - if (!insert.second) + if (!insert.second && !force) throw SessionBusyException(QPID_MSG("Session already attached: " << id)); Detached::iterator i = std::find(detached.begin(), detached.end(), id); std::auto_ptr<SessionState> state; @@ -62,7 +62,6 @@ std::auto_ptr<SessionState> SessionMana state->attach(h); } return state; - // FIXME aconway 2008-04-29: implement force } void SessionManager::detach(std::auto_ptr<SessionState> session) { Modified: qpid/trunk/qpid/python/qpid/messaging/driver.py URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/messaging/driver.py?rev=1684716&r1=1684715&r2=1684716&view=diff ============================================================================== --- qpid/trunk/qpid/python/qpid/messaging/driver.py (original) +++ qpid/trunk/qpid/python/qpid/messaging/driver.py Wed Jun 10 17:11:49 2015 @@ -591,6 +591,7 @@ class Engine: self.log_id = "%x" % id(self.connection) self._closing = False self._connected = False + self._reconnecting = bool(connection.sessions) self._attachments = {} self._in = LinkIn() @@ -874,8 +875,9 @@ class Engine: else: raise RuntimeError("all channels used") sst = SessionState(self, ssn, ssn.name, ch) - sst.write_op(SessionAttach(name=ssn.name)) + sst.write_op(SessionAttach(name=ssn.name, force=self._reconnecting)) sst.write_op(SessionCommandPoint(sst.sent, 0)) + self._reconnecting = False sst.outgoing_idx = 0 sst.acked = [] sst.acked_idx = 0 --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org