From 39cc020af1b4dec97698487957ee08a26fc51768 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Tue, 9 Apr 2019 19:12:51 +0200 Subject: [PATCH] BUG/MEDIUM: streams: Don't remove the SI_FL_ERR flag in si_update_both(). Don't inconditionally remove the SI_FL_ERR code in si_update_both(), which is called at the end of process_stream(). Doing so was a bug that was there since the flag was introduced, because we were always setting si->flags to SI_FL_NONE, however we don't want to lose that one, except if we will retry connecting, so only remove it in sess_update_st_cer(). This should be backported to 1.9. --- src/stream.c | 1 + src/stream_interface.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/stream.c b/src/stream.c index 25618aebba..e19056e21c 100644 --- a/src/stream.c +++ b/src/stream.c @@ -822,6 +822,7 @@ static int sess_update_st_cer(struct stream *s) si->state = SI_ST_TAR; si->exp = tick_add(now_ms, MS_TO_TICKS(delay)); } + si->flags &= ~SI_FL_ERR; return 0; } return 0; diff --git a/src/stream_interface.c b/src/stream_interface.c index 1e944f1f5e..da31482eeb 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -830,8 +830,8 @@ void si_update_both(struct stream_interface *si_f, struct stream_interface *si_b req->flags &= ~(CF_READ_NULL|CF_READ_PARTIAL|CF_READ_ATTACHED|CF_WRITE_NULL|CF_WRITE_PARTIAL); res->flags &= ~(CF_READ_NULL|CF_READ_PARTIAL|CF_READ_ATTACHED|CF_WRITE_NULL|CF_WRITE_PARTIAL); - si_f->flags &= ~(SI_FL_ERR|SI_FL_EXP); - si_b->flags &= ~(SI_FL_ERR|SI_FL_EXP); + si_f->flags &= ~SI_FL_EXP; + si_b->flags &= ~SI_FL_EXP; si_f->prev_state = si_f->state; si_b->prev_state = si_b->state; -- 2.47.3