Code

sysdb: Do an attempt to reconnect on all user input.
[sysdb.git] / src / tools / sysdb / input.c
index 52036028d2905d35555705ec026e2bc30f96c55e..08f639f1ac104c9a8c0527321bc92ba89070e4db 100644 (file)
@@ -133,6 +133,9 @@ handle_input(char *line)
                return;
        }
 
+       if (sdb_client_eof(sysdb_input->client))
+               sdb_input_reconnect();
+
        sdb_strbuf_append(sysdb_input->input, "%s\n", line);
        free(line);
 
@@ -294,5 +297,17 @@ sdb_input_exec_query(void)
        return 0;
 } /* sdb_input_exec_query */
 
+int
+sdb_input_reconnect(void)
+{
+       sdb_client_close(sysdb_input->client);
+       if (sdb_client_connect(sysdb_input->client, sysdb_input->user)) {
+               printf("Failed to reconnect to SysDBd.\n");
+               return -1;
+       }
+       printf("Successfully reconnected to SysDBd.\n");
+       return 0;
+} /* sdb_input_reconnect */
+
 /* vim: set tw=78 sw=4 ts=4 noexpandtab : */