summaryrefslogtreecommitdiff
path: root/functions.c
diff options
context:
space:
mode:
authorLuke Bratch <luke@bratch.co.uk>2019-09-14 13:11:20 +0100
committerLuke Bratch <luke@bratch.co.uk>2019-09-14 13:11:20 +0100
commite546de81cbecac2b02d29a02d6c6fd7d0785d739 (patch)
treee6afd5fcf595d43cae9df0417c112e537991b1d0 /functions.c
parent5ea442d5b8d0b9101737c7c4b7ff7cb89a1f7821 (diff)
Handle ignoring replay messages from before we launched better to avoid misleading error messages going to clients.
Diffstat (limited to 'functions.c')
-rw-r--r--functions.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/functions.c b/functions.c
index 0a03ca9..af8d5dd 100644
--- a/functions.c
+++ b/functions.c
@@ -786,7 +786,7 @@ int channelindex(struct channel *channels, char *name) {
}
// Send the requested number of lines of replay log to the requested client.
-// 'sourcefd' is the client to send to, and replayseconds is the number of
+// 'sourcefd' is the client to send to, and 'replayseconds' is the number of
// seconds of replay log to replay.
// Returns 1 for success or 0 for failure.
int doreplay(int sourcefd, int replayseconds, struct client *clients, struct settings *settings, struct ircdstate *ircdstate, struct channel *channels) {
@@ -811,9 +811,13 @@ int doreplay(int sourcefd, int replayseconds, struct client *clients, struct set
// Replay those lines!
for (int i = 0; i < numlines; i++) {
- if (!readreplayline(replayseconds, i, outgoingmsg, settings, ircdstate)) {
+ int ret = readreplayline(replayseconds, i, outgoingmsg, settings, ircdstate);
+ if (ret == 0) {
debugprint(DEBUG_CRIT, "Error requesting replay line.\n");
return 0;
+ } else if (ret == -1) {
+ debugprint(DEBUG_FULL, "doreplay(): readreplayline() said to ignore replay line.\n");
+ continue;
}
// Check if the replay line is a TOPIC, a JOIN, or a PART so we don't