diff --git a/doc/internals/filters.txt b/doc/internals/filters.txt
index 7e949a9..83aebf5 100644
--- a/doc/internals/filters.txt
+++ b/doc/internals/filters.txt
@@ -1,6 +1,6 @@
                    -----------------------------------------
                           Filters Guide - version 1.7
-                          ( Last update: 2016-06-21 )
+                          ( Last update: 2016-11-10 )
                    ------------------------------------------
                           Author : Christopher Faulet
               Contact : christopher dot faulet at capflam dot org
@@ -191,6 +191,7 @@
         int  (*stream_set_backend)(struct stream *s, struct filter *f, struct proxy *be);
         void (*stream_stop)       (struct stream *s, struct filter *f);
         void (*detach)            (struct stream *s, struct filter *f);
+        void (*check_timeouts)    (struct stream *s, struct filter *f);
 
         /*
          * Channel callbacks
@@ -612,6 +613,25 @@
         /* ... */
     }
 
+Finally, you may be interested to be notified when the stream is woken up
+because of an expired timer. This could let you a chance to check your own
+timeouts, if any. To do so you can use the following callback:
+
+  * 'flt_opt.check_timeouts': It is called when a stream is woken up because
+                              of an expired timer.
+
+For example:
+
+    /* Called when a stream is woken up because of an expired timer */
+    static void
+    my_filter_check_timeouts(struct stream *s, struct filter *filter)
+    {
+        struct my_filter_config *my_conf = FLT_CONF(filter);
+
+        /* ... */
+    }
+
+
 3.5. ANALYZING THE CHANNELS ACTIVITY
 ------------------------------------
 
diff --git a/include/proto/filters.h b/include/proto/filters.h
index c351f6e..912c413 100644
--- a/include/proto/filters.h
+++ b/include/proto/filters.h
@@ -104,6 +104,7 @@
 int  flt_set_stream_backend(struct stream *s, struct proxy *be);
 int  flt_stream_init(struct stream *s);
 void flt_stream_release(struct stream *s, int only_backend);
+void flt_stream_check_timeouts(struct stream *s);
 
 int  flt_http_data(struct stream *s, struct http_msg *msg);
 int  flt_http_chunk_trailers(struct stream *s, struct http_msg *msg);
diff --git a/include/types/filters.h b/include/types/filters.h
index 62b457d..e6d0c2c 100644
--- a/include/types/filters.h
+++ b/include/types/filters.h
@@ -90,6 +90,8 @@
  *                          the stream is stopped for filters defined on the
  *                          stream's frontend and when the analyze ends for
  *                          filters defined on the stream's backend.
+ *  - check_timeouts      : Called when a a stream is woken up because of an
+ *                          expired timer.
  *
  *
  *  - channel_start_analyze: Called when a filter starts to analyze a channel.
@@ -159,7 +161,7 @@
 	int  (*stream_set_backend)(struct stream *s, struct filter *f, struct proxy *be);
 	void (*stream_stop)       (struct stream *s, struct filter *f);
 	void (*detach)            (struct stream *s, struct filter *f);
-
+	void (*check_timeouts)    (struct stream *s, struct filter *f);
 	/*
 	 * Channel callbacks
 	 */
diff --git a/src/filters.c b/src/filters.c
index 8c3485e..91404a4 100644
--- a/src/filters.c
+++ b/src/filters.c
@@ -398,6 +398,21 @@
 }
 
 /*
+ * Calls 'check_timeouts' for all filters attached to a stream. This happens when
+ * the stream is woken up because of expired timer.
+ */
+void
+flt_stream_check_timeouts(struct stream *s)
+{
+	struct filter *filter;
+
+	list_for_each_entry(filter, &strm_flt(s)->filters, list) {
+		if (FLT_OPS(filter)->check_timeouts)
+			FLT_OPS(filter)->check_timeouts(s, filter);
+	}
+}
+
+/*
  * Called when a backend is set for a stream. If the frontend and the backend
  * are not the same, this function attaches all backend filters to the
  * stream. Returns -1 if an error occurs, 0 otherwise.
diff --git a/src/flt_trace.c b/src/flt_trace.c
index 76081b2..96ce2ac 100644
--- a/src/flt_trace.c
+++ b/src/flt_trace.c
@@ -214,6 +214,16 @@
 		   __FUNCTION__);
 }
 
+/* Called when the stream is woken up because of an expired timer */
+static void
+trace_check_timeouts(struct stream *s, struct filter *filter)
+{
+	struct trace_config *conf = FLT_CONF(filter);
+
+	STRM_TRACE(conf, s, "%-25s",
+		   __FUNCTION__);
+}
+
 /**************************************************************************
  * Hooks to handle channels activity
  *************************************************************************/
@@ -509,6 +519,7 @@
 	.stream_start       = trace_stream_start,
 	.stream_set_backend = trace_stream_set_backend,
 	.stream_stop        = trace_stream_stop,
+	.check_timeouts     = trace_check_timeouts,
 
 	/* Handle channels activity */
 	.channel_start_analyze = trace_chn_start_analyze,
diff --git a/src/stream.c b/src/stream.c
index a5d80a3..288d36d 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -1620,6 +1620,9 @@
 			si_shutr(si_b);
 		}
 
+		if (HAS_FILTERS(s))
+			flt_stream_check_timeouts(s);
+
 		/* Once in a while we're woken up because the task expires. But
 		 * this does not necessarily mean that a timeout has been reached.
 		 * So let's not run a whole stream processing if only an expiration
@@ -2365,8 +2368,9 @@
 
 	update_exp_and_leave:
 		/* Note: please ensure that if you branch here you disable SI_FL_DONT_WAKE */
-		t->expire = tick_first(tick_first(req->rex, req->wex),
-				       tick_first(res->rex, res->wex));
+		t->expire = tick_first((tick_is_expired(t->expire, now_ms) ? 0 : t->expire),
+				       tick_first(tick_first(req->rex, req->wex),
+						  tick_first(res->rex, res->wex)));
 		if (!req->analysers)
 			req->analyse_exp = TICK_ETERNITY;
 
