• Soren Hansen's avatar
    Avoid terminating connections prematurely · abc845d1
    Soren Hansen authored
    While sending very large messages (far beyond what fits in a the tcp
    buffer, so it takes multiple sendto system calls for it to finish),
    zmq_close will close the connection regardless of ZMQ_LINGER.
    
    In case no engine is attached, a pipe->check_read() is needed to look
    for the delimiter in the pipe and ultimately trigger the pipe
    termination.
    
    However, if there *is* an engine attached, the check_read() looks ahead
    and finds the delimiter and terminates the connection even though the
    engine might actually still be in the middle of sending a message.
    
    This happens because while the io_thread is still busy sending the data,
    the pipe can get terminated and the io thread ends up being terminated.
    abc845d1
Name
Last commit
Last update
builds Loading commit data...
doc Loading commit data...
include Loading commit data...
packaging/nuget Loading commit data...
perf Loading commit data...
src Loading commit data...
tests Loading commit data...
tools Loading commit data...
tweetnacl Loading commit data...
.gitignore Loading commit data...
.hgeol Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
CMakeLists.txt Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Dockerfile Loading commit data...
INSTALL Loading commit data...
MAINTAINERS Loading commit data...
Makefile.am Loading commit data...
NEWS Loading commit data...
README.cygwin.md Loading commit data...
README.md Loading commit data...
acinclude.m4 Loading commit data...
autogen.sh Loading commit data...
branding.bmp Loading commit data...
ci_build.sh Loading commit data...
configure.ac Loading commit data...
installer.ico Loading commit data...
version.sh Loading commit data...