diff --git a/src/client.cpp b/src/client.cpp index bd9cd9d..2538905 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -52,6 +52,17 @@ Channel::~Channel() context->chanByCID.erase(cid); context->chanByName.erase(name); // searchBuckets cleaned in tickSearch() + if(state==Creating || state==Active) { + { + (void)evbuffer_drain(conn->txBody.get(), evbuffer_get_length(conn->txBody.get())); + + EvOutBuf R(hostBE, conn->txBody.get()); + + to_wire(R, sid); + to_wire(R, cid); + } + conn->enqueueTxBody(CMD_DESTROY_CHANNEL); + } } void Channel::createOperations() diff --git a/src/clientconn.cpp b/src/clientconn.cpp index b118f6a..701e0c4 100644 --- a/src/clientconn.cpp +++ b/src/clientconn.cpp @@ -84,7 +84,7 @@ void Connection::sendDestroyRequest(uint32_t sid, uint32_t ioid) to_wire(R, sid); to_wire(R, ioid); } - enqueueTxBody(CMD_DESTROY_CHANNEL); + enqueueTxBody(CMD_DESTROY_REQUEST); }