Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
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);
}