On 8.1.2013, at 11.15, Joan Picanyol i Puig lists-dovecot@biaix.org wrote:
if (i_strocpy(sa.un.sun_path, path, sizeof(sa.un.sun_path)) < 0) { /* too long path */ errno = EINVAL;
Your path is longer than possible. This patch should make it clearer in future: http://hg.dovecot.org/dovecot-2.1/rev/e4cc3f2b66e3
Thanks, changing base_dir did the trick. I wonder why though, since both PATH_MAX and FILENAME_MAX are defined as 1024 on my system…
UNIX socket paths seem to have a rather small limit in all operating systems. Linux and Solaris has 108 bytes, OSX has 104 bytes. Probably increasing it would break some programs.
Although I wonder if it would be possible to simply allocate more memory than the struct contains and just write the string there. OSX also has some length parameter:
unsigned char sun_len; /* sockaddr len including null */
Anyway, probably not worth the trouble.