diff options
author | June McEnroe <june@causal.agency> | 2020-04-23 19:01:37 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-04-23 19:01:37 -0400 |
commit | 07461047d65974f28538e164b57c7f2fa8d87b56 (patch) | |
tree | 40c6858d5bf1b7e0841fd8e040f3a5e2be0586e8 | |
parent | Use . as ${LDLIBS.$@} separator (diff) | |
download | litterbox-1.2p1.tar.gz litterbox-1.2p1.zip |
Call updateConsumer from handleError 1.2p1
This should prevent continually crashing on the same ERROR in the pounce buffer.
-rw-r--r-- | litterbox.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/litterbox.c b/litterbox.c index 08b98ac..632549a 100644 --- a/litterbox.c +++ b/litterbox.c @@ -632,8 +632,23 @@ static void handlePing(struct Message *msg) { format("PONG :%s\r\n", msg->params[0]); } +static void updateConsumer(size_t pos) { + static sqlite3_stmt *stmt; + const char *sql = SQL( + INSERT INTO consumers (host, port, pos) VALUES (:host, :port, :pos) + ON CONFLICT (host, port) DO + UPDATE SET pos = :pos WHERE host = :host AND port = :port; + ); + dbPersist(&stmt, sql); + dbBindText(stmt, ":host", host); + dbBindText(stmt, ":port", port); + dbBindInt(stmt, ":pos", pos); + dbRun(stmt); +} + static void handleError(struct Message *msg) { require(msg, false, 1); + if (msg->pos) updateConsumer(msg->pos); errx(EX_UNAVAILABLE, "%s", msg->params[0]); } @@ -674,20 +689,6 @@ static int compar(const void *cmd, const void *_handler) { return strcmp(cmd, handler->cmd); } -static void updateConsumer(size_t pos) { - static sqlite3_stmt *stmt; - const char *sql = SQL( - INSERT INTO consumers (host, port, pos) VALUES (:host, :port, :pos) - ON CONFLICT (host, port) DO - UPDATE SET pos = :pos WHERE host = :host AND port = :port; - ); - dbPersist(&stmt, sql); - dbBindText(stmt, ":host", host); - dbBindText(stmt, ":port", port); - dbBindInt(stmt, ":pos", pos); - dbRun(stmt); -} - static void handle(struct Message msg) { if (!msg.cmd) return; const struct Handler *handler = bsearch( |