diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/SocketBuffer.cc | 5 | ||||
| -rw-r--r-- | src/SocketBuffer.h | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/SocketBuffer.cc b/src/SocketBuffer.cc index 28024a96..b8e09cdb 100644 --- a/src/SocketBuffer.cc +++ b/src/SocketBuffer.cc @@ -68,6 +68,11 @@ ssize_t SocketBuffer::send() size_t totalslen = 0; while(!bufq_.empty()) { BufEntry& buf = bufq_[0]; + if(buf.size() == 0) { + buf.deleteBuf(); + bufq_.pop_front(); + continue; + } const char* data; ssize_t r; if(buf.type == TYPE_BYTES) { diff --git a/src/SocketBuffer.h b/src/SocketBuffer.h index 68f5ab77..3dbf50b0 100644 --- a/src/SocketBuffer.h +++ b/src/SocketBuffer.h @@ -66,7 +66,16 @@ private: delete str; } } - + + size_t size() const + { + if(type == TYPE_BYTES) { + return bytesLen; + } else { + return str->size(); + } + } + BufEntry(unsigned char* bytes, size_t len): type(TYPE_BYTES), bytes(bytes), bytesLen(len) {} |
