From: chris mikkelson Date: Thu, 15 Apr 2010 21:04:08 +0000 (-0500) Subject: Publish URLs to inter-module communication channel. X-Git-Url: https://git.mikk.net/?a=commitdiff_plain;h=3c65324c21d5dfb51d3d1b0ac28c04306ac5e07f;p=ssm_nmsg Publish URLs to inter-module communication channel. --- diff --git a/ssm_nmsg.c b/ssm_nmsg.c index 5318a58..c2b3c07 100644 --- a/ssm_nmsg.c +++ b/ssm_nmsg.c @@ -40,13 +40,20 @@ struct ssm_nmsg_state { unsigned nurl; }; +struct smtpsink_module ss_module; +int publish_urls = 0; + static void addurl(msgproc *m, char *s, void *data) { - struct ssm_nmsg_state *nms = (struct ssm_nmsg_state *)data; + struct conn *c = (struct conn *)data; + struct ssm_nmsg_state *nms = ssm_getpriv(&ss_module, c); const uint8_t *url = (const uint8_t *)s; size_t len = strlen(s) + 1; + if (publish_urls) + ssm_publish("bodyurl", c, s); + if (nms->msg) nmsg_message_set_field(nms->msg, "bodyurl", nms->nurl++, url, len); @@ -87,6 +94,11 @@ ssm_nmsg_init(char *config) nmsg_res res; nmsg_message_t m; + if (!ssm_nproviders("bodyurl")) { + ssm_provide("bodyurl"); + publish_urls = 1; + } + pthread_key_create(&nmsg_output_key, 0); msgproc_module_init(&msgproc_message); @@ -126,8 +138,6 @@ ssm_nmsg_init(char *config) } } -struct smtpsink_module ss_module; - static int ssm_nmsg_connect(struct conn *c) { @@ -152,7 +162,7 @@ ssm_nmsg_connect(struct conn *c) } if (nms->urlproc) { - msgproc_setcallback(nms->urlproc, addurl, nms); + msgproc_setcallback(nms->urlproc, addurl, c); msgproc_start(nms->urlproc); } }