|
|
@@ -101,16 +101,13 @@ static int zmq_proto_open(URLContext *h, const char *uri, int flags) |
|
|
|
s->socket = zmq_socket(s->context, ZMQ_PUB); |
|
|
|
if (!s->socket) { |
|
|
|
av_log(h, AV_LOG_ERROR, "Error occured during zmq_socket(): %s\n", ZMQ_STRERROR); |
|
|
|
zmq_ctx_term(s->context); |
|
|
|
return AVERROR_EXTERNAL; |
|
|
|
goto fail_term; |
|
|
|
} |
|
|
|
|
|
|
|
ret = zmq_bind(s->socket, uri); |
|
|
|
if (ret == -1) { |
|
|
|
av_log(h, AV_LOG_ERROR, "Error occured during zmq_bind(): %s\n", ZMQ_STRERROR); |
|
|
|
zmq_close(s->socket); |
|
|
|
zmq_ctx_term(s->context); |
|
|
|
return AVERROR_EXTERNAL; |
|
|
|
goto fail_close; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -119,27 +116,28 @@ static int zmq_proto_open(URLContext *h, const char *uri, int flags) |
|
|
|
s->socket = zmq_socket(s->context, ZMQ_SUB); |
|
|
|
if (!s->socket) { |
|
|
|
av_log(h, AV_LOG_ERROR, "Error occured during zmq_socket(): %s\n", ZMQ_STRERROR); |
|
|
|
zmq_ctx_term(s->context); |
|
|
|
return AVERROR_EXTERNAL; |
|
|
|
goto fail_term; |
|
|
|
} |
|
|
|
|
|
|
|
ret = zmq_setsockopt(s->socket, ZMQ_SUBSCRIBE, "", 0); |
|
|
|
if (ret == -1) { |
|
|
|
av_log(h, AV_LOG_ERROR, "Error occured during zmq_setsockopt(): %s\n", ZMQ_STRERROR); |
|
|
|
zmq_close(s->socket); |
|
|
|
zmq_ctx_term(s->context); |
|
|
|
return AVERROR_EXTERNAL; |
|
|
|
goto fail_close; |
|
|
|
} |
|
|
|
|
|
|
|
ret = zmq_connect(s->socket, uri); |
|
|
|
if (ret == -1) { |
|
|
|
av_log(h, AV_LOG_ERROR, "Error occured during zmq_connect(): %s\n", ZMQ_STRERROR); |
|
|
|
zmq_close(s->socket); |
|
|
|
zmq_ctx_term(s->context); |
|
|
|
return AVERROR_EXTERNAL; |
|
|
|
goto fail_close; |
|
|
|
} |
|
|
|
} |
|
|
|
return 0; |
|
|
|
|
|
|
|
fail_close: |
|
|
|
zmq_close(s->socket); |
|
|
|
fail_term: |
|
|
|
zmq_ctx_term(s->context); |
|
|
|
return AVERROR_EXTERNAL; |
|
|
|
} |
|
|
|
|
|
|
|
static int zmq_proto_write(URLContext *h, const unsigned char *buf, int size) |
|
|
|