diff --git a/src/tools/sysdb/main.c b/src/tools/sysdb/main.c
index fc226f965f991ec65f4cc4bbfa5b61f7ba318e57..331cfa25e640912ac79ac6b37c44d3a91f374323 100644 (file)
--- a/src/tools/sysdb/main.c
+++ b/src/tools/sysdb/main.c
}
/* Wait for server replies. We might get any number of log messages
- * but eventually see the reply to the query, which is either OK or
+ * but eventually see the reply to the query, which is either DATA or
* ERROR. */
while (42) {
status = sdb_command_print_reply(client);
break;
}
- if ((status == CONNECTION_OK) || (status == CONNECTION_ERROR))
+ if ((status == CONNECTION_DATA) || (status == CONNECTION_ERROR))
break;
+ if (status == CONNECTION_OK) {
+ /* pre 0.4 versions used OK instead of DATA */
+ sdb_log(SDB_LOG_WARNING, "Received unexpected OK status from "
+ "server in response to a QUERY (expected DATA); "
+ "assuming we're talking to an old server");
+ break;
+ }
}
- if (status)
- break;
+ if ((status != CONNECTION_OK) && (status != CONNECTION_DATA))
+ break; /* error */
}
sdb_llist_iter_destroy(iter);
int status = execute_commands(input.client, commands);
sdb_llist_destroy(commands);
sdb_client_destroy(input.client);
- exit(status);
+ if ((status != CONNECTION_OK) && (status != CONNECTION_DATA))
+ exit(1);
+ exit(0);
}
sdb_log(SDB_LOG_INFO, "SysDB client "SDB_CLIENT_VERSION_STRING