diff --git a/ChangeLog b/ChangeLog index 54f7e5ee..948f1f29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-08-21 Tatsuhiro Tsujikawa + + Don't try to send empty string. + * src/SocketBuffer.cc + * src/SocketBuffer.h + 2010-08-14 Tatsuhiro Tsujikawa Listen both IPv4 and IPv6 for BitTorrent protocol. 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) {}