1
0
forked from bip/bip

Fix endless loop on /BIP LIST connections with long on_connect_send

- when the line to send to IRC was over a specific limit, the code was
  not moving to the next item in the on_connect_send list after sending
  the text to the client
- this change also adds a hard limit of 10 on_connect_send to display
  for each connection

Signed-off-by: Loïc Gomez <bip@animanova.fr>
This commit is contained in:
Loïc Gomez 2024-02-04 23:24:29 +09:00
parent f797d25e06
commit cd7d357a6f
Signed by: Kyoshiro
GPG Key ID: F80C2F71E89B990A

View File

@ -1331,9 +1331,10 @@ void adm_print_connection(struct link_client *ic, struct link *lnk,
bufpos = buf; bufpos = buf;
list_iterator_t itocs; list_iterator_t itocs;
int i = 0;
for (list_it_init(&lnk->on_connect_send, &itocs); for (list_it_init(&lnk->on_connect_send, &itocs);
list_it_item(&itocs);) { list_it_item(&itocs) && i < 10; i++) {
bufpos = bip_strcatf_fit(&remaining, bufpos, "%s", bufpos = bip_strcatf_fit(&remaining, bufpos, " on_connect_send: %s",
(char *)list_it_item(&itocs)); (char *)list_it_item(&itocs));
if (!bufpos) { if (!bufpos) {
// if oversized, print and reset // if oversized, print and reset
@ -1341,6 +1342,7 @@ void adm_print_connection(struct link_client *ic, struct link *lnk,
bip_notify(ic, "%s", buf); bip_notify(ic, "%s", buf);
remaining = LINE_SIZE_LIM; remaining = LINE_SIZE_LIM;
bufpos = buf; bufpos = buf;
list_it_next(&itocs);
continue; continue;
} else { } else {
// if ok, go to next item // if ok, go to next item