diff --git a/src/main/lkt.c b/src/main/lkt.c
index 0f5350ebdfe032a9e96e631e64d7067dc98d8b22..232633e81bdd38f010bb6a2cc53c5d295083f186 100644
--- a/src/main/lkt.c
+++ b/src/main/lkt.c
@@ -28,8 +28,6 @@
 #define LKT_KEY_VALUE_SEP               ": \n\t\0"
 #define fail_if(cond, msg)              { if (cond) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } }
 #define fail(msg)                       { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); }
-#define lkt_send_and_exit(buffer, len)  exit(write_socket(lkt_connect(), buffer, len))
-#define write_socket(sock, buff, len)   (fwrite(buff, sizeof(char), len, sock) != len)
 
 #define exit_with_status(sock, buff) {                \
     read_socket(sock, buff, 2);                       \
@@ -82,29 +80,6 @@ read_socket(FILE *sock, char *buff, size_t max_len)
     return i;
 }
 
-static int
-write_socket_format(FILE *sock, const char *format, ...)
-{
-    int ret = 1, size;
-    char buff[LKT_MESSAGE_MAX];
-    va_list ap;
-
-    va_start(ap, format);
-    size = vsnprintf(buff, LKT_MESSAGE_MAX - 1, format, ap);
-    buff[LKT_MESSAGE_MAX - 1] = 0;
-
-    if (size < 0)
-        goto err;
-
-    if (fwrite(buff, sizeof(char), size, sock) < (unsigned int) size)
-        goto err;
-
-    ret = 0;
-err:
-    va_end(ap);
-    return ret;
-}
-
 static FILE *
 create_socket(const char *host, const char *port)
 {
@@ -143,6 +118,33 @@ lkt_connect(void)
     return sock;
 }
 
+static void
+write_socket(FILE *sock, const char *format, ...)
+{
+    int size;
+    char buff[LKT_MESSAGE_MAX];
+    va_list ap;
+
+    va_start(ap, format);
+    size = vsnprintf(buff, LKT_MESSAGE_MAX - 1, format, ap);
+    buff[LKT_MESSAGE_MAX - 1] = 0;
+
+    if (size < 0)
+        fail("Connexion error")
+
+    if (fwrite(buff, sizeof(char), size, sock) < (unsigned int) size)
+        fail("Connexion error")
+
+    va_end(ap);
+}
+
+noreturn static inline void
+lkt_send_and_exit(const char *buffer, size_t len)
+{
+    write_socket(lkt_connect(), buffer, len);
+    exit(EXIT_SUCCESS);
+}
+
 static char *
 lkt_skip_key(char *buffer)
 {
@@ -163,7 +165,7 @@ send_cmd_with_uri(FILE *sock, char *cmd, int argc, const char **argv)
     }
     strncat(buf, argv[i], LKT_MESSAGE_MAX - 1);
     strncat(buf, "\n", LKT_MESSAGE_MAX - 1);
-    (void) write_socket_format(sock, "%s %s://%s", cmd, argv[0], buf);
+    write_socket(sock, "%s %s://%s", cmd, argv[0], buf);
 }
 
 /* Functions implementing options. */
@@ -188,7 +190,8 @@ simple_send_with_password__(const char *cmd)
         fail("Password not provided");
     static const char cmd__[] = "password %s\n%s\nclose\n";
     FILE *sock = lkt_connect();
-    exit(write_socket_format(sock, cmd__, password, cmd));
+    write_socket(sock, cmd__, password, cmd);
+    exit(EXIT_SUCCESS);
 }
 
 noreturn void
@@ -218,17 +221,17 @@ rescan_or_update__(struct lkt_cmd_args *args, const char *cmd)
 
     /* All the db */
     if (args->argc == 0)
-        exit(write_socket_format(sock, "password %s\n%s\n", password, cmd));
+        write_socket(sock, "password %s\n%s\n", password, cmd);
 
     /* With a query */
     else {
         memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));
         for (i = 0; i < args->argc; ++i)
             strncat(buff, args->argv[i], LKT_MESSAGE_MAX - 1);
-        exit(write_socket_format(sock, "password %s\n%s %s\n", password, cmd, buff));
+        write_socket(sock, "password %s\n%s %s\n", password, cmd, buff);
     }
 
-    abort();
+    exit(EXIT_SUCCESS);
 }
 
 noreturn void
@@ -259,11 +262,8 @@ play__(struct lkt_cmd_args *args)
     static const char cmd_pause__[]     = "pause\nclose\n";
 
     char buff[LKT_MESSAGE_MAX];
-
     FILE *sock = lkt_connect();
-
-    if (write_socket(sock, status__, sizeof(status__))) /* In bytes. */
-        exit(EXIT_FAILURE);
+    write_socket(sock, status__);
 
     for (;;) {
         memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));
@@ -276,8 +276,10 @@ play__(struct lkt_cmd_args *args)
             if (STR_NMATCH(lkt_skip_key(buff), "stop", 4)) {
                 if (!pos)
                     lkt_send_and_exit(cmd_play__, sizeof(cmd_play__));  /* In bytes. */
-                else
-                    exit(write_socket_format(lkt_connect(), cmd_play_from__, pos));
+                else {
+                    write_socket(lkt_connect(), cmd_play_from__, pos);
+                    exit(EXIT_SUCCESS);
+                }
             }
 
             else
@@ -295,8 +297,7 @@ ping__(struct lkt_cmd_args *args)
         fail("Invalid argument, the ping command takes no arguments");
     char buff[6] = {0};
     FILE *sock = lkt_connect();
-    if (write_socket(sock, "ping\nclose\n", sizeof("ping\n")))
-        fail("Failed to send the ping to lektord");
+    write_socket(sock, "ping\nclose\n");
     read_socket(sock, buff, 6 * sizeof(char));
     if (!STR_NMATCH(buff, "OK", 2))
         fail("ACK");
@@ -316,9 +317,7 @@ current__(struct lkt_cmd_args *args)
     char *mem = NULL;
     FILE *sock = lkt_connect();
 
-    if (write_socket(sock, current_song__, sizeof(current_song__))) /* In bytes. */
-        exit(EXIT_FAILURE);
-
+    write_socket(sock, current_song__);
     assert(mem = calloc(6 * LKT_MESSAGE_MAX, sizeof(char)));
     assert(memset(mem, 0, 6 * LKT_MESSAGE_MAX * sizeof(char)));
 
@@ -382,9 +381,7 @@ queue_pop__(struct lkt_cmd_args *args)
     FILE *sock = lkt_connect();
 
     /* Get lektor's status. */
-
-    if (write_socket(sock, "status\n", sizeof("status\n")))
-        exit(EXIT_FAILURE);
+    write_socket(sock, "status\n");
 
 #define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
     for (;;) {
@@ -405,7 +402,7 @@ queue_pop__(struct lkt_cmd_args *args)
     sock = lkt_connect();
     if (!songid)
         exit(EXIT_FAILURE);
-    write_socket_format(sock, "next\ndeleteid %d\n", songid);
+    write_socket(sock, "next\ndeleteid %d\n", songid);
     exit_with_status(sock, buff);
 }
 
@@ -429,8 +426,7 @@ status__(struct lkt_cmd_args *args)
 
     /* Get lektor's status. */
 
-    if (write_socket(sock, status_str__, strlen(status_str__)))
-        goto error;
+    write_socket(sock, status_str__);
 
 #define assign_flag(str, f)  if (STR_NMATCH(buff, str, len) && (atoi(lkt_skip_key(buff)) == 1)) { flags[it++] = f; continue; }
 #define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
@@ -497,7 +493,7 @@ queue_delete__(struct lkt_cmd_args *args)
 
     sscanf(args->argv[0], "%d", &dumy);
     if (dumy != 0) {
-        fail_if(write_socket_format(sock, cmd_id__, dumy), "ACK");
+        write_socket(sock, cmd_id__, dumy);
         exit_with_status(sock, buff);
     }
 
@@ -543,7 +539,7 @@ queue_seek__(struct lkt_cmd_args *args)
         fail("Invalid argument, must be only one integer");
 
     FILE *sock = lkt_connect();
-    fail_if(write_socket_format(sock, "playid %ld\n", id), "ACK");
+    write_socket(sock, "playid %ld\n", id);
     exit_with_status(sock, buf);
 }
 
@@ -573,8 +569,10 @@ queue_pos__(struct lkt_cmd_args *args)
     FILE *sock = NULL;
 redo:
     sock = lkt_connect();
-    fail_if(up != 0 && write_socket_format(sock, "playlist %d:%d\n", continuation, up), "ACK");
-    fail_if(up == 0 && write_socket_format(sock, "playlist %d\n", continuation),        "ACK");
+    if (up != 0)
+        write_socket(sock, "playlist %d:%d\n", continuation, up);
+    else
+        write_socket(sock, "playlist %d\n", continuation);
 
     for (;;) {
         memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));
@@ -622,8 +620,7 @@ queue_list__(struct lkt_cmd_args *args)
     /* Get the current pos to get limits for the playlist command. */
 
     sock = lkt_connect();
-    if (write_socket(sock, "status\n", sizeof("status\n")))
-        fail("Communication error");
+    write_socket(sock, "status\n");
 
 #define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
     for (;;) {
@@ -680,7 +677,7 @@ plt_destroy__(struct lkt_cmd_args *args)
     fail_if(args->argc != 1, "Invalid argument");
     FILE *sock = lkt_connect();
     char buff[2];
-    write_socket_format(sock, "rm %s\n", args->argv[0]);
+    write_socket(sock, "rm %s\n", args->argv[0]);
     exit_with_status(sock, buff);
 }
 
@@ -691,7 +688,7 @@ plt_create__(struct lkt_cmd_args *args)
 
     FILE *sock = lkt_connect();
     char buff[2];
-    write_socket_format(sock, "playlistadd %s\n", args->argv[0]);
+    write_socket(sock, "playlistadd %s\n", args->argv[0]);
     exit_with_status(sock, buff);
 }
 
@@ -701,15 +698,13 @@ stickers_get__(struct lkt_cmd_args *args)
     char buff[LKT_MESSAGE_MAX];
     FILE *sock;
     if (args->argc == 2)
-        write_socket_format(sock = lkt_connect(), "sticker get %s %s\n",
-                            args->argv[0], args->argv[1]);
+        write_socket(sock = lkt_connect(), "sticker get %s %s\n", args->argv[0], args->argv[1]);
     else if (args->argc == 3)
-        write_socket_format(sock = lkt_connect(), "sticker get %s %s %s\n",
-                            args->argv[0], args->argv[1], args->argv[2]);
+        write_socket(sock = lkt_connect(), "sticker get %s %s %s\n", args->argv[0], args->argv[1],
+                     args->argv[2]);
     else if (args->argc == 5)
-        write_socket_format(sock = lkt_connect(), "sticker get %s %s %s %s %s\n",
-                            args->argv[0], args->argv[1], args->argv[2],
-                            args->argv[3], args->argv[4]);
+        write_socket(sock = lkt_connect(), "sticker get %s %s %s %s %s\n", args->argv[0],
+                     args->argv[1], args->argv[2], args->argv[3], args->argv[4]);
     else
         fail("Invalid argument");
 
@@ -730,7 +725,7 @@ stickers_set__(struct lkt_cmd_args *args)
     fail_if(args->argc != 4, "Invalid argument");
     FILE *sock = lkt_connect();
     char buff[2];
-    write_socket_format(sock, "sticker set %s %s %s %s\n", args->argv[0],
+    write_socket(sock, "sticker set %s %s %s %s\n", args->argv[0],
                         args->argv[1], args->argv[2], args->argv[3]);
     exit_with_status(sock, buff);
 }
@@ -741,10 +736,10 @@ stickers_delete__(struct lkt_cmd_args *args)
     FILE *sock;
     char buff[2];
     if (args->argc == 2)
-        write_socket_format(sock = lkt_connect(), "sticker delete %s %s",
+        write_socket(sock = lkt_connect(), "sticker delete %s %s",
                             args->argv[0], args->argv[1]);
     else if (args->argc == 3)
-        write_socket_format(sock = lkt_connect(), "sticker delete %s %s %s",
+        write_socket(sock = lkt_connect(), "sticker delete %s %s %s",
                             args->argv[0], args->argv[1], args->argv[2]);
     else
         fail("Invalid argument");
@@ -765,10 +760,10 @@ search_with_cmd__(struct lkt_cmd_args *args, const char *cmd)
 redo:
     sock = lkt_connect();
 
-    write_socket_format(sock, "%d %s", continuation, cmd);
+    write_socket(sock, "%d %s", continuation, cmd);
     for (i = 0; i < args->argc; ++i)
-        write_socket_format(sock, " %s", args->argv[i]);
-    (void) write_socket(sock, "\n", sizeof("\n") / sizeof(char));
+        write_socket(sock, " %s", args->argv[i]);
+    write_socket(sock, "\n");
 
     for (;;) {
         memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));