<div>Scenario:</div><div>Start a push server bind on tcp transport. Start a pull client which connects to above tcp endpoint. Wait for 5 seconds. Kill the server. Now if I restart the server again client is not re-connecting.</div>
<div>When I check netstat -antp, connection remains in close_wait state.</div><div><br></div><div>This case works fine with version-2.2.</div><div>Test code:</div><div><br></div><div>====</div><div><div>///zmq_s.cpp</div>
<div>#include <zmq.hpp></div><div><br></div><div>//using namespace zmq;</div><div>zmq::context_t g_zmqcontext(1);</div><div>int main()</div><div>{</div><div>        try{</div><div>        zmq::socket_t s1(g_zmqcontext, ZMQ_PUSH);</div>
<div>        s1.bind("tcp://*:5556");</div><div>        int i=0;</div><div>                while(1){</div><div>                        char str[100];</div><div>                        sprintf(str, "Hi-%d", i++);</div>
<div>                        zmq::message_t msg(strlen(str));</div><div>                        memcpy(msg.data(), str, strlen(str)+1);</div><div>                        puts("Sending message");</div><div>                        s1.send(msg);</div>
<div>                        puts("Send done");</div><div>                }</div><div>        }catch(zmq::error_t &e){</div><div>                printf("Error :%d-%s\n", e.num(), e.what()); fflush(stdout);</div>
<div>        }</div><div>}</div></div><div>--------------------</div><div><br></div><div><div>//zmq_c.cpp</div><div>#include <zmq.hpp></div><div><br></div><div>zmq::context_t g_zmqContext(1);</div><div>int main(){</div>
<div>        try{</div><div>                zmq::socket_t s2(g_zmqContext, ZMQ_PULL);</div><div>                s2.connect("tcp://<a href="http://127.0.0.1:5556">127.0.0.1:5556</a>");</div><div>                while(1){</div>
<div>                        zmq::message_t msg;</div><div>                        puts("Waiting for message");</div><div>                        s2.recv(&msg);</div><div>                        printf("Msg received: %s\n", msg.data()); fflush(stdout);</div>
<div>                        usleep(1);</div><div>                }</div><div>        }catch(zmq::error_t &e){</div><div>                printf("Err:%s-%d\n", e.num(), e.what()); fflush(stdout);</div><div>        }</div>
<div>}</div></div><div><br></div><div>==============</div><div><br></div><div>Regards</div><div>Sunil Kharti</div>