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.
This commit is contained in:
Olivier Houchard 2019-04-09 19:12:51 +02:00 committed by Olivier Houchard
parent 90caa07935
commit 39cc020af1
2 changed files with 3 additions and 2 deletions

View File

@ -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;

View File

@ -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;