diff --git a/src/commands.c b/src/commands.c
index b9f6a8e8e5c64ee9fad3b06d30ff353a4da12636..5f08f3af8806e4b65a5a68c4964329fffe76b4cc 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -236,6 +236,8 @@ command_play(sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX],
 
     /* Do the actual job here. */
 
+    database_queue_stop(db);
+
     if (win->window)
         win->close(win);
 
diff --git a/src/net/listen.c b/src/net/listen.c
index e2b7dbee7187783bf813f8d322f777f195aa5b11..7b28879f2e567abd7782ce09b7f394e66d3568e5 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -200,8 +200,7 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
         else if (!strcmp(cmd.name, "previous"))
             err = !command_previous(srv->db, &srv->win, &srv->mpd_idle_events);
         else if (!strcmp(cmd.name, "play"))
-            err = ! (command_stop(srv->db, &srv->win, &srv->mpd_idle_events)
-                     && command_play(srv->db, &srv->win, cmd.args, &srv->mpd_idle_events));
+            err = ! command_play(srv->db, &srv->win, cmd.args, &srv->mpd_idle_events);
         else if (!strcmp(cmd.name, "playid"))
             err = ! command_playid(srv->db, &srv->win, cmd.args, &srv->mpd_idle_events);
         else if (!strcmp(cmd.name, "stop"))