]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Improved istream-timeout error message.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 22 Apr 2016 17:10:34 +0000 (20:10 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 22 Apr 2016 18:04:50 +0000 (21:04 +0300)
We're supposed to check that timeout isn't triggered after a long-running
code, but it's not perfect. So provide the actual timing information we
saw instead of the expected timeout.

src/lib/istream-timeout.c

index b3dd471902012873281cade90c75b13e6a69c905..d5ab1c8fc036ab96131be09cc3df07c980ba6e5a 100644 (file)
@@ -38,7 +38,7 @@ static void i_stream_timeout_switch_ioloop(struct istream_private *stream)
 
 static void i_stream_timeout(struct timeout_istream *tstream)
 {
-       unsigned int msecs;
+       unsigned int over_msecs;
        int diff;
 
        if (tstream->update_timestamp) {
@@ -59,13 +59,14 @@ static void i_stream_timeout(struct timeout_istream *tstream)
                                          i_stream_timeout, tstream);
                return;
        }
+       over_msecs = diff - tstream->timeout_msecs;
 
-       msecs = tstream->timeout_msecs % 1000;
        io_stream_set_error(&tstream->istream.iostream,
-                           "Read timeout in %u%s s after %"PRIuUOFF_T" bytes",
-                           tstream->timeout_msecs/1000,
-                           msecs == 0 ? "" : t_strdup_printf(".%u", msecs),
-                           tstream->istream.istream.v_offset);
+                           "Read timeout in %u.%03u s after %"PRIuUOFF_T" bytes%s",
+                           diff/1000, diff%1000,
+                           tstream->istream.istream.v_offset,
+                           over_msecs < 1000 ? "" : t_strdup_printf(
+                               " (requested timeout in %u s)", tstream->timeout_secs));
        tstream->istream.istream.stream_errno = ETIMEDOUT;
 
        i_stream_set_input_pending(tstream->istream.parent, TRUE);