mirror of
https://github.com/joyieldInc/predixy.git
synced 2025-12-24 22:46:41 +08:00
fix bug : leak private connections
This commit is contained in:
parent
ca1630a6b4
commit
ad37c08f51
@ -906,7 +906,7 @@ void Handler::handleResponse(ConnectConnection* s, Request* req, Response* res)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (s && !s->isShared()) {
|
||||
if (s && !s->isShared() && res->code() != Response::ServerConnectionClose) {
|
||||
if (!c->inTransaction() && !c->inSub(true)) {
|
||||
mConnPool[s->server()->id()]->putPrivateConnection(s);
|
||||
c->detachConnectConnection();
|
||||
|
||||
@ -91,9 +91,12 @@ public:
|
||||
P obj = mHead;
|
||||
if (obj) {
|
||||
Node* n = node((T*)obj);
|
||||
mHead = n->next(Idx);
|
||||
if (--mSize == 0) {
|
||||
mTail = nullptr;
|
||||
if (mHead == mTail) {
|
||||
mHead = mTail = nullptr;
|
||||
mSize = 0;
|
||||
} else {
|
||||
mHead = n->next(Idx);
|
||||
--mSize;
|
||||
}
|
||||
n->reset(Idx);
|
||||
}
|
||||
|
||||
@ -59,7 +59,8 @@ Response::Response():
|
||||
|
||||
Response::Response(GenericCode code):
|
||||
mType(Reply::None),
|
||||
mInteger(0)
|
||||
mInteger(0),
|
||||
mCode(code)
|
||||
{
|
||||
auto r = GenericResponses[code];
|
||||
mType = r->mType;
|
||||
|
||||
@ -128,6 +128,9 @@ public:
|
||||
{
|
||||
return mRes;
|
||||
}
|
||||
GenericCode code() const {
|
||||
return mCode;
|
||||
}
|
||||
private:
|
||||
bool getAddr(int& slot, SString<Const::MaxAddrLen>& addr, const char* token) const;
|
||||
private:
|
||||
@ -135,6 +138,7 @@ private:
|
||||
int64_t mInteger;
|
||||
Segment mHead; //for mget
|
||||
Segment mRes;
|
||||
GenericCode mCode;
|
||||
};
|
||||
|
||||
typedef List<Response> ResponseList;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user