summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/SocketBuffer.cc5
-rw-r--r--src/SocketBuffer.h11
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) {}