Thank you Ellie and Michael, I agree with both of you.
Unfortunately seems that in Solaris Illumos Unix sockets works differently 
compared to Linux and there is no parameter that can be tweaked in order to 
obtain a larger bufsiz using SOCK_DGRAM.

Guided by Illumos developers, we ended up in this solution:
...
    /* Get send buffer size */
    optlen = sizeof(bufsiz);
    r = getsockopt(soc, SOL_SOCKET, SO_SNDBUF, &bufsiz, &optlen);
    if (r == -1) {
        syslog(LOG_ERR, "unable to getsockopt(SO_SNDBUF) on notify socket: %m");
        goto out;
    }

    /*
     * Use maximum of 1/10 of send buffer size (-overhead), but at least
     * NOTIFY_MAXSIZE
     */
    if (bufsiz < NOTIFY_MAXSIZE) {
        int req_bufsize = NOTIFY_MAXSIZE;

        if (setsockopt(soc, SOL_SOCKET, SO_SNDBUF, &req_bufsize,
            sizeof (req_bufsize)) != 0) {
                syslog(LOG_ERR, "unable to setsockopt(SO_SNDBUF) "
                       "on notify socket: %m");
                goto out;
        }
        bufsiz = req_bufsize;
    }
    else {
        bufsiz = MIN(bufsiz / 10 - 32, NOTIFY_MAXSIZE);
    }

    /*
     * build request of the form:
     *
     * method NUL class NUL priority NUL user NUL mailbox NUL
     *   nopt NUL N(option NUL) message NUL
     */
...

Thank you,
Matteo
------------------------------------------
Cyrus: Info
Permalink: 
https://cyrus.topicbox.com/groups/info/T84dc31747d015b6c-M94a2cb364a8dc0f3997e811d
Delivery options: https://cyrus.topicbox.com/groups/info/subscription

Reply via email to