diff --git a/src/frontend/query.c b/src/frontend/query.c
index 585222d25a56fbe971b57c6655df9a7f5e5b9565..a30bee3e4b8f274730ff650d2ca84cc168fee58d 100644 (file)
--- a/src/frontend/query.c
+++ b/src/frontend/query.c
sdb_conn_node_t *node = NULL;
int status = 0;
+ if ((! conn) || (conn->cmd != CONNECTION_QUERY))
+ return -1;
+
parsetree = sdb_fe_parse(sdb_strbuf_string(conn->buf),
(int)conn->cmd_len);
if (! parsetree) {
sdb_fe_fetch(sdb_conn_t *conn)
{
char hostname[conn->cmd_len + 1];
+ if ((! conn) || (conn->cmd != CONNECTION_FETCH))
+ return -1;
strncpy(hostname, sdb_strbuf_string(conn->buf), conn->cmd_len);
hostname[sizeof(hostname) - 1] = '\0';
return sdb_fe_exec_fetch(conn, hostname, /* filter = */ NULL);
int
sdb_fe_list(sdb_conn_t *conn)
{
+ if ((! conn) || (conn->cmd != CONNECTION_LIST))
+ return -1;
return sdb_fe_exec_list(conn, /* filter = */ NULL);
} /* sdb_fe_list */
sdb_store_matcher_t *m;
int status;
+ if ((! conn) || (conn->cmd != CONNECTION_LOOKUP))
+ return -1;
+
m = sdb_fe_parse_matcher(sdb_strbuf_string(conn->buf),
(int)conn->cmd_len);
if (! m) {
int
sdb_fe_exec(sdb_conn_t *conn, sdb_conn_node_t *node)
{
+ sdb_store_matcher_t *m = NULL, *filter = NULL;
+
if (! node)
return -1;
switch (node->cmd) {
case CONNECTION_FETCH:
- return sdb_fe_exec_fetch(conn, CONN_FETCH(node)->name,
- /* filter = */ NULL);
+ if (CONN_FETCH(node)->filter)
+ filter = CONN_FETCH(node)->filter->matcher;
+ return sdb_fe_exec_fetch(conn, CONN_FETCH(node)->name, filter);
case CONNECTION_LIST:
- return sdb_fe_exec_list(conn, /* filter = */ NULL);
+ if (CONN_LIST(node)->filter)
+ filter = CONN_LIST(node)->filter->matcher;
+ return sdb_fe_exec_list(conn, filter);
case CONNECTION_LOOKUP:
- {
- sdb_store_matcher_t *m = NULL, *filter = NULL;
if (CONN_LOOKUP(node)->matcher)
m = CONN_LOOKUP(node)->matcher->matcher;
if (CONN_LOOKUP(node)->filter)
filter = CONN_LOOKUP(node)->filter->matcher;
return sdb_fe_exec_lookup(conn, m, filter);
- }
default:
sdb_log(SDB_LOG_ERR, "frontend: Unknown command %i", node->cmd);