static flux_future_t *wrap_event_rpc (flux_t *h, const char *topic, int flags, const void *src, int srclen) { flux_future_t *f; if (src) { size_t dstlen = sodium_base64_encoded_len (srclen, sodium_base64_VARIANT_ORIGINAL); void *dst; if (!(dst = malloc (dstlen))) return NULL; sodium_bin2base64 (dst, dstlen, (unsigned char *)src, srclen, sodium_base64_VARIANT_ORIGINAL); if (!(f = flux_rpc_pack (h, "event.pub", FLUX_NODEID_ANY, 0, "{s:s s:i s:s}", "topic", topic, "flags", flags, "payload", dst))) { int saved_errno = errno; free (dst); errno = saved_errno; return NULL; } free (dst); } else { if (!(f = flux_rpc_pack (h, "event.pub", FLUX_NODEID_ANY, 0, "{s:s s:i}", "topic", topic, "flags", flags))) { return NULL; } } return f; }
static void sigabrt_handler_7(int sig) { (void) sig; signal(SIGABRT, sigabrt_handler_8); assert(sodium_bin2base64(NULL, 1, NULL, 1, -1) == NULL); exit(1); }
static void sigabrt_handler_8(int sig) { (void) sig; signal(SIGABRT, sigabrt_handler_9); assert(sodium_bin2base64(NULL, 1, NULL, 1, sodium_base64_VARIANT_ORIGINAL) == NULL); exit(1); }