MINOR: tevt: Don't duplicate termination event during reporting

It is hard to never detect the same event several time without painful
tests. In other words, the same termination event can be reported several
time and this must be handled. To do so, "tevt_report_event" macro is
updated to ignore an event if the last reported one is of the same type, for
the same location. Of course, if the same event is reported several times at
different moment, it will not be detected.
This commit is contained in:
Christopher Faulet 2025-01-20 15:35:47 +01:00
parent 2dc02f75b1
commit cbd898c42b

View File

@ -746,14 +746,17 @@ static inline int conn_pr_mode_to_proto_mode(int proxy_mode)
/* Must be used to report add an event in <_evt> termination events log.
* For now, it only handles 32-bits integers.
*/
#define tevt_report_event(_evts, loc, type) ({ \
\
if (!((_evts) & 0xff000000)) { \
(_evts) <<= 8; \
(_evts) |= (loc) << 4; \
(_evts) |= (type); \
} \
(_evts); \
#define tevt_report_event(_evts, loc, type) ({ \
\
unsigned int _evt = ((loc) << 4) | (type); \
\
if (!((_evts) & 0xff000000) && \
(unsigned char)_evt != (unsigned char)(_evts)) { \
(_evts) <<= 8; \
(_evts) |= (loc) << 4; \
(_evts) |= (type); \
} \
(_evts); \
})
/* Function to convert a termination events log to a string */