void
ngx_http_upstream_free_zeromq_peer(ngx_peer_connection_t *pc, void *data,
    ngx_uint_t state)
{
    ngx_http_upstream_zeromq_peer_data_t  *zp = data;

    if (pc->connection) {
#if defined(nginx_version) && (nginx_version >= 1001004)
        if (pc->connection->pool) {
            ngx_destroy_pool(pc->connection->pool);
        }
#endif

        pc->connection = NULL;
    }

    if (zp->recv.endpoint != zp->send.endpoint) {
        if (zp->recv.socket) {
            ngx_zeromq_close(&zp->recv);
        }
    }

    if (zp->send.socket) {
        ngx_zeromq_close(&zp->send);
    }
}
void
ngx_http_upstream_free_zeromq_peer(ngx_peer_connection_t *pc, void *data,
    ngx_uint_t state)
{
    ngx_http_upstream_zeromq_peer_data_t  *zp = data;

    ngx_http_upstream_free_round_robin_peer(pc, data, state);

    if (pc->connection) {
#if defined(nginx_version) && (nginx_version >= 1001004)
        if (pc->connection->pool) {
            ngx_destroy_pool(pc->connection->pool);
        }
#endif

        pc->connection->data = zp->zmq;
        ngx_zeromq_close(pc->connection);
        pc->connection = NULL;
    }
}