Skip to content

Instantly share code, notes, and snippets.

@walkure
Created October 18, 2014 05:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save walkure/0c37201669508d1adf58 to your computer and use it in GitHub Desktop.
Save walkure/0c37201669508d1adf58 to your computer and use it in GitHub Desktop.
workaround patch for https://github.com/barnybug/wmr100/ (commit d28e072) building/running on Raspbian(libzmq1 2.2.0+dfsg-2)
diff --git a/wmr100.c b/wmr100.c
index 9b43c21..d6f3153 100644
--- a/wmr100.c
+++ b/wmr100.c
@@ -271,6 +271,7 @@ void wmr_output_stdout(WMR *wmr, char *msg) {
}
void wmr_output_zmq(WMR *wmr, char *topic, char *msg) {
+ zmq_msg_t zmsg;
int len = strlen(topic) + 1 + strlen(msg);
void *buf = malloc(len);
char *data = (char *)buf;
@@ -279,8 +280,19 @@ void wmr_output_zmq(WMR *wmr, char *topic, char *msg) {
strcpy(data, topic);
data += strlen(topic) + 1;
memcpy(data, msg, strlen(msg));
- zmq_send(wmr->zmq_sock, buf, len, 0);
+
+ if(zmq_msg_init_size(&zmsg,len) != 0){
+ perror("zmq_msg_init_size failed");
+ return;
+ }
+ memcpy(zmq_msg_data(&zmsg),buf,len);
+ if(zmq_send(wmr->zmq_sock, &zmsg, 0) != 0){
+ perror("zmq_send failed");
+ zmq_msg_close(&zmsg);
+ return;
+ }
free(buf);
+ zmq_msg_close(&zmsg);
}
void wmr_log_data(WMR *wmr, char *topic, char *msg) {
@@ -624,7 +636,9 @@ int init_output_zmq(WMR *wmr) {
wmr->zmq_sock = zmq_socket(wmr->zmq_ctx, ZMQ_PUB);
assert(wmr->zmq_sock != NULL);
assert(gOutputZmq);
- zmq_connect(wmr->zmq_sock, gOutputZmq);
+ if(zmq_bind(wmr->zmq_sock, gOutputZmq) != 0)
+ perror("zmq_bind failed");
+
return 0;
}
~
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment