Hi Timo, Hi *, in 1.2 the dict server (tested with sqlite backend) is somewhat broken. It bails out regularly with "Fatal: dict: Socket already exists: ..." (looks like a race condition as it doesn't fail always).
We discovered that this new code in dict-server.c seems to be the problem: server->fd = net_listen_unix_unlink_stale(path, 64); if (server->fd == -1) { if (errno == EADDRINUSE) i_fatal("Socket already exists: %s", path); else i_fatal("net_listen_unix(%s) failed: %m", path); } replacing it with the old code: int i = 0; [...] while (server->fd == -1) { server->fd = net_listen_unix(path, 64); if (server->fd != -1) break; if (errno != EADDRINUSE || ++i == 2) i_fatal("net_listen_unix(%s) failed: %m", path); /* see if it really exists */ if (net_connect_unix(path) != -1 || errno != ECONNREFUSED) i_fatal("Socket already exists: %s", path); /* delete and try again */ if (unlink(path) < 0) i_fatal("unlink(%s) failed: %m", path); } "fixes" the problem. But I think the real fix would have to be done in the new function `net_listen_unix_unlink_stale'. cheers sascha -- Sascha Wilde OpenPGP key: 4BB86568 Intevation GmbH, Osnabrück http://www.intevation.de/~wilde/ Amtsgericht Osnabrück, HR B 18998 http://www.intevation.de/ Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner
pgpAC1O2gXijB.pgp
Description: PGP signature