Hi all,

I have a test that makes zmq_disconnect and zmq_close fail (in the frame of developments on libzmq itself, but besides that, all tests pass).


*Test 1:*
    void *worker = zmq_socket (ctx, ZMQ_DEALER);
    assert (worker);
    int linger_time = 100;
// rc = zmq_setsockopt (worker, ZMQ_LINGER, &linger_time, sizeof(linger_time));
//    assert (rc == 0);
    rc = zmq_connect (worker, "inproc://backend");
    assert (rc == 0);

// do some stuff

    rc = zmq_disconnect (worker, "inproc://backend");
printf("Error: zmq_disconnect failed: %s (%d)\n", zmq_strerror(errno), zmq_errno());
    assert (rc == 0);
    rc = zmq_connect (worker, "tcp://127.0.0.1:9999");
    assert (rc == 0);

The output is:
Error: zmq_disconnect failed: Resource temporarily unavailable (11)

Moreover, if I suppress this zmq_disconnect command and execute the next one which is a zmq_connect, it looks like it is not connected to the new address.

*Test 2:*
    void *worker = zmq_socket (ctx, ZMQ_DEALER);
    assert (worker);
    int linger_time = 100;
// rc = zmq_setsockopt (worker, ZMQ_LINGER, &linger_time, sizeof(linger_time));
//    assert (rc == 0);
    rc = zmq_connect (worker, "inproc://backend");
    assert (rc == 0);

// do some stuff

    rc = zmq_close (worker);
printf("Error: zmq_disconnect failed: %s (%d)\n", zmq_strerror(errno), zmq_errno());
    assert (rc == 0);
    void *worker = zmq_socket (ctx, ZMQ_DEALER);
    assert (worker);
    rc = zmq_connect (worker, "tcp://127.0.0.1:9999");
    assert (rc == 0);

The output is:
Error: zmq_disconnect failed: Resource temporarily unavailable (11)


If I add some linger time to the worker socket, it changes nothing.

To what I could read, this errno = 11 indicates Resource Temporarily Unavailable.

Any idea please ?

Laurent


_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to