diff --git a/src/commands.c b/src/commands.c index 2b1fa4eeed0b61bdff208858576626a5c33b3f49..4e2b1a5b585ca60cc51a95184d2eca6f70f1671a 100644 --- a/src/commands.c +++ b/src/commands.c @@ -400,7 +400,6 @@ command_find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MA { char rgx[PATH_MAX], *col_name, *mpd_tag; int count; - struct lkt_uri uri; struct lkt_search search = { .srv = srv, .c = c, @@ -416,22 +415,16 @@ command_find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MA mpd_tag = cmd_args[0]; if (!strcasecmp("any", mpd_tag) || !strcasecmp("all", mpd_tag) || !strcasecmp("query", mpd_tag) || !strcasecmp("source", mpd_tag) || !strcasecmp("title", mpd_tag)) { - uri.type = uri_query; col_name = LKT_DATABASE_KARA_COLUMNT_ANY; } else if (!strcasecmp("author", mpd_tag)) { - uri.type = uri_author; col_name = LKT_DATABASE_NAME_KAUTHOR; } else if (!strcasecmp("category", mpd_tag) || !strcasecmp("cat", mpd_tag)) { - uri.type = uri_category; col_name = LKT_DATABASE_NAME_KCAT; } else if (!strcasecmp("type", mpd_tag)) { - uri.type = uri_type; col_name = LKT_DATABASE_NAME_KTYPE; } else if (!strcasecmp("language", mpd_tag) || !strcasecmp("lang", mpd_tag)) { - uri.type = uri_language; col_name = LKT_DATABASE_NAME_KLANG; } else if (!strcasecmp("id", mpd_tag)) { - uri.type = uri_id; col_name = LKT_DATABASE_NAME_KID; } else return false; @@ -445,7 +438,6 @@ command_find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MA if (cmd_args[i + 1]) strncat(rgx, " ", PATH_MAX - 1); } - uri.value = rgx; /* Make the search langand do the right action */ RETURN_UNLESS(init(srv->db, col_name, rgx, &search), "Failed to init search", false); diff --git a/src/database/queue.c b/src/database/queue.c index 98f4c7bbcb4f7adf5947305c06e6bd9c601cd1f4..c936b1fccc79cdb696268487faf1455c7eb08605 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -106,15 +106,13 @@ queue_add_with_col_like_str(volatile sqlite3 *db, const char *col, const char *v " );" /* Separate karas that are after the current one */ "INSERT INTO queue_tmp (kara_id, priority)" - " SELECT kara_id, priority" - " FROM queue" - " WHERE position > " CURRENT_POS_OR_0 ";" + " SELECT kara_id, priority FROM queue WHERE position > " CURRENT_POS_OR_0 + " ORDER BY priority DESC, position ASC;" "DELETE FROM queue WHERE position > " CURRENT_POS_OR_0 ";" /* Insert back */ "INSERT INTO queue (position, kara_id, priority)" " SELECT position + " CURRENT_POS_OR_0 ", kara_id, priority" - " FROM queue_tmp" - " ORDER BY priority, position;" + " FROM queue_tmp;" /* Drop temporary tables */ "DROP TABLE queue_tmp;" "DELETE FROM sqlite_sequence WHERE name = 'queue_tmp';"; @@ -137,8 +135,10 @@ queue_add_with_col_like_str(volatile sqlite3 *db, const char *col, const char *v sqlite3_finalize(stmt); /* Reorder kara that are after the current one, do this shit only if priority > 1... */ - if (priority > 1) + if (priority > 1) { SQLITE_EXEC(db, SQL_REORDER, error); + LOG_INFO_SCT("DB", "%s", "Queue has been reordered"); + } /* End */ SQLITE_EXEC(db, "COMMIT;", error); @@ -172,13 +172,14 @@ database_queue_add_plt(volatile sqlite3 *db, const char *plt_name, int priority) " , priority INTEGER NOT NULL DEFAULT 1 CHECK(priority > 0 AND priority < 6)" " );" /* Separate karas that are after the current one */ - "INSERT INTO queue_tmp (kara_id, priority) SELECT kara_id, priority FROM queue WHERE position > " CURRENT_POS_OR_0 ";" + "INSERT INTO queue_tmp (kara_id, priority)" + " SELECT kara_id, priority FROM queue WHERE position > " CURRENT_POS_OR_0 + " ORDER BY priority DESC, position ASC;" "DELETE FROM queue WHERE position > " CURRENT_POS_OR_0 ";" /* Insert back */ "INSERT INTO queue (position, kara_id, priority)" " SELECT position + " CURRENT_POS_OR_0 ", kara_id, priority" - " FROM queue_tmp" - " ORDER BY priority, position;" + " FROM queue_tmp;" /* Drop temporary tables */ "DROP TABLE queue_tmp;" "DELETE FROM sqlite_sequence WHERE name = 'queue_tmp';"; diff --git a/src/net/listen.c b/src/net/listen.c index d04ba7d0ea1e2da666c0875a7e7a4b282ee835e4..0aa570f4ab740bf10aa4c14bf05b84976c4a90cb 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -395,8 +395,10 @@ handle_outgoing_data(struct lkt_state *srv, size_t c) cli->buffer_out_len); return 0; } - if (errno == EPIPE) + if (errno == EPIPE) { + LOG_WARN_SCT("NETWORK", "Client %ld is out, free all its messages", c); handle_disconnected_client(srv, i); + } return -1; }