]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm director: Give up waiting for handshake after 5 seconds.
authorTimo Sirainen <tss@iki.fi>
Mon, 19 Jul 2010 18:05:36 +0000 (19:05 +0100)
committerTimo Sirainen <tss@iki.fi>
Mon, 19 Jul 2010 18:05:36 +0000 (19:05 +0100)
src/doveadm/doveadm-director.c

index 38dd925dc8143a67c6717c50fa278d04f5966a35..38ca96f242219184e2ea41362215d32943c1804a 100644 (file)
@@ -50,9 +50,19 @@ static void director_connect(struct director_context *ctx)
        ctx->input = i_stream_create_fd(fd, (size_t)-1, TRUE);
        director_send(ctx, DIRECTOR_HANDSHAKE);
 
+       alarm(5);
        line = i_stream_read_next_line(ctx->input);
-       if (line == NULL)
-               i_fatal("%s disconnected", ctx->socket_path);
+       alarm(0);
+       if (line == NULL) {
+               if (ctx->input->stream_errno != 0)
+                       i_fatal("read(%s) failed: %m", ctx->socket_path);
+               else if (ctx->input->eof)
+                       i_fatal("%s disconnected", ctx->socket_path);
+               else {
+                       i_fatal("read(%s) timed out (is director configured?)",
+                               ctx->socket_path);
+               }
+       }
        if (!version_string_verify(line, "director-doveadm", 1)) {
                i_fatal("%s not a compatible director-doveadm socket",
                        ctx->socket_path);