diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-07-06 16:14:24 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-07-06 16:14:24 +0000 |
commit | 28da041573d03c04d9e9edd21a2f96fcf6c36a48 (patch) | |
tree | 527705439a0be7e2d37831f5fc839f05e65ac989 /src | |
parent | bca17564585a3cfbc38754555ba8feff4fcbb8a2 (diff) |
SSL buffering tweaks. NOTE this is not a complete fix till i say so, don't use this in production yet unless youre a masochist.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7427 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/inspsocket.cpp | 27 | ||||
-rw-r--r-- | src/users.cpp | 3 |
2 files changed, 8 insertions, 22 deletions
diff --git a/src/inspsocket.cpp b/src/inspsocket.cpp index 63964c1ea..f76543562 100644 --- a/src/inspsocket.cpp +++ b/src/inspsocket.cpp @@ -449,28 +449,11 @@ bool InspSocket::FlushWriteBuffer() { try { - int result = Instance->Config->GetIOHook(this)->OnRawSocketWrite(this->fd, outbuffer[0].c_str(), outbuffer[0].length()); - if (result > 0) - { - if ((unsigned int)result >= outbuffer[0].length()) - { - outbuffer.pop_front(); - } - else - { - std::string temp = outbuffer[0].substr(result); - outbuffer[0] = temp; - errno = EAGAIN; - } - } - else if (((result == -1) && (errno != EAGAIN)) || (result == 0)) - { - this->OnError(I_ERR_WRITE); - this->state = I_ERROR; - this->Instance->SE->DelFd(this); - this->Close(); - return true; - } + /* XXX: The lack of buffering here is NOT a bug, modules implementing this interface have to + * implement their own buffering mechanisms + */ + Instance->Config->GetIOHook(this)->OnRawSocketWrite(this->fd, outbuffer[0].c_str(), outbuffer[0].length()); + outbuffer.pop_front(); } catch (CoreException& modexcept) { diff --git a/src/users.cpp b/src/users.cpp index bc221b263..d83788566 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -1375,6 +1375,9 @@ void userrec::Write(std::string text) { try { + /* XXX: The lack of buffering here is NOT a bug, modules implementing this interface have to + * implement their own buffering mechanisms + */ ServerInstance->Config->GetIOHook(this->GetPort())->OnRawSocketWrite(this->fd, text.data(), text.length()); } catch (CoreException& modexcept) |