Code

frontend/sock: Fixed an info message.
[sysdb.git] / src / frontend / connection.c
index 028f3776966b233ec2371b52653f10ce1752c5c0..940f61b493c0c0f284eb36fec4ae4d26ae07822e 100644 (file)
@@ -60,6 +60,7 @@ command_handle(sdb_conn_t *conn)
        assert(conn && conn->cmd && conn->cmd_len);
        /* XXX */
        sdb_strbuf_skip(conn->buf, conn->cmd_len);
+       conn->cmd = conn->cmd_len = 0;
        return 0;
 } /* command_handle */
 
@@ -111,15 +112,17 @@ sdb_connection_read(sdb_conn_t *conn)
 
        while (42) {
                ssize_t status = connection_read(conn);
+
+               if ((! conn->cmd) && (! conn->cmd_len)
+                               && (sdb_strbuf_len(conn->buf) >= 2 * sizeof(int32_t)))
+                       command_init(conn);
+               if (conn->cmd_len && (sdb_strbuf_len(conn->buf) >= conn->cmd_len))
+                       command_handle(conn);
+
                if (status <= 0)
                        break;
 
                n += status;
-
-               if (conn->cmd_len && (sdb_strbuf_len(conn->buf) >= conn->cmd_len))
-                       command_handle(conn);
-               else if (sdb_strbuf_len(conn->buf) >= 2 * sizeof(int32_t))
-                       command_init(conn);
        }
        return n;
 } /* sdb_connection_read */