static bool cancel_file_daemon_job(UAContext *ua, const char *cmd, JCR *jcr)
{
CLIENT *old_client;
+ bool ret = false;
+ BSOCK *fd;
if (!jcr->client) {
Dmsg0(100, "No client to cancel\n");
ua->jcr->client = jcr->client;
if (!connect_to_file_daemon(ua->jcr, 10, FDConnectTimeout, 1)) {
ua->error_msg(_("Failed to connect to File daemon.\n"));
- ua->jcr->client = old_client;
- return false;
+ goto bail_out;
}
Dmsg3(10, "Connected to file daemon %s for cancel ua.jcr=%p jcr=%p\n",
ua->jcr->client->name(), ua->jcr, jcr);
- BSOCK *fd = ua->jcr->file_bsock;
+ fd = ua->jcr->file_bsock;
fd->fsend("%s Job=%s\n", cmd, jcr->Job);
while (fd->recv() >= 0) {
ua->send_msg("%s", fd->msg);
}
fd->signal(BNET_TERMINATE);
+ ret = true;
+
+bail_out:
free_bsock(ua->jcr->file_bsock);
ua->jcr->client = old_client;
- return true;
+ return ret;
}
static bool cancel_sd_job(UAContext *ua, const char *cmd, JCR *jcr)
POOL_MEM buf;
POOLMEM *out;
SNAPSHOT_DBR snapdbr;
- CLIENT *client;
+ CLIENT *client, *old_client;
BSOCK *fd;
if (!open_new_client_db(ua)) {
}
/* Connect to File daemon */
+ old_client = ua->jcr->client;
ua->jcr->client = client;
/* Try to connect for 15 seconds */
client->name(), get_client_address(ua->jcr, client, buf.addr()), client->FDport);
if (!connect_to_file_daemon(ua->jcr, 1, 15, 0)) {
ua->error_msg(_("Failed to connect to Client.\n"));
- ua->jcr->client = NULL;
+ free_bsock(ua->jcr->file_bsock);
+ ua->jcr->client = old_client;
return 0;
}
ua->jcr->file_bsock->signal(BNET_TERMINATE);
free_bsock(ua->jcr->file_bsock);
- ua->jcr->client = NULL;
-
+ ua->jcr->client = old_client;
db_delete_snapshot_record(ua->jcr, ua->db, &snapdbr);
ua->send_msg(_("Snapshot \"%s\" deleted from catalog\n"), snapdbr.Name);
return 1;
POOL_MEM tmp;
SNAPSHOT_DBR snap;
POOLMEM *buf;
- CLIENT *client;
+ CLIENT *client, *old_client;
BSOCK *fd;
+ int ret = 0;
client = select_client_resource(ua, JT_BACKUP_RESTORE);
if (!client) {
}
/* Connect to File daemon */
+ old_client = ua->jcr->client;
ua->jcr->client = client;
/* Try to connect for 15 seconds */
if (!connect_to_file_daemon(ua->jcr, 1, 15, 0)) {
ua->error_msg(_("Failed to connect to Client.\n"));
- return 0;
+ goto bail_out;
}
fd = ua->jcr->file_bsock;
parse_args(ua->cmd, &ua->args, &ua->argc, ua->argk, ua->argv, MAX_CMD_ARGS);
ua->jcr->file_bsock->signal(BNET_TERMINATE);
- free_bsock(ua->jcr->file_bsock);
- ua->jcr->client = NULL;
free_pool_memory(buf);
- return 1;
+ ret = 1;
+
+bail_out:
+ free_bsock(ua->jcr->file_bsock);
+ ua->jcr->client = old_client;
+ return ret;
}
static void storeit(void *ctx, const char *msg)
SNAPSHOT_DBR snapdbr;
alist *lst;
intptr_t id;
+ CLIENT *old_client = ua->jcr->client;
snapshot_scan_cmdline(ua, 0, &snapdbr);
snapdbr.expired = true;
if (ua->jcr->file_bsock) {
ua->jcr->file_bsock->signal(BNET_TERMINATE);
free_bsock(ua->jcr->file_bsock);
- ua->jcr->client = NULL;
}
-
free_pool_memory(buf);
delete lst;
+ ua->jcr->client = old_client;
return 1;
}
}
ua->jcr->file_bsock->signal(BNET_TERMINATE);
- free_bsock(ua->jcr->file_bsock);
ua->jcr->max_bandwidth = 0;
bail_out:
+ free_bsock(ua->jcr->file_bsock);
ua->jcr->client = old_client;
return 1;
}
if (!connect_to_file_daemon(ua->jcr, 1, 15, 0)) {
ua->error_msg(_("Failed to connect to Client.\n"));
- ua->jcr->client = old_client;
- return;
+ goto bail_out;
}
Dmsg0(120, "Connected to file daemon\n");
ua->send_msg("%s", fd->msg);
}
fd->signal(BNET_TERMINATE);
+
+bail_out:
free_bsock(ua->jcr->file_bsock);
ua->jcr->client = old_client;
return;
jcr->client->name(), get_client_address(jcr, jcr->client, buf.addr()), jcr->client->FDport);
if (!connect_to_file_daemon(jcr, 1, 15, 0)) {
ua->error_msg(_("Failed to connect to Client.\n"));
- return 1;
+ goto bail_out;
}
/* The level string change if accurate mode is enabled */
if (!connect_to_storage_daemon(jcr, 10, SDConnectTimeout, 1)) {
ua->error_msg(_("Failed to connect to Storage daemon.\n"));
- return;
+ goto bail_out;
}
/* Keep track of this important event */
ua->send_msg("%s", sd->msg);
}
sd->signal(BNET_TERMINATE);
+
+bail_out:
free_bsock(ua->jcr->store_bsock);
}
client->name(), get_client_address(ua->jcr, client, buf.addr()), client->FDport);
if (!connect_to_file_daemon(ua->jcr, 1, 15, 0)) {
ua->error_msg(_("Failed to connect to Client.\n"));
- return;
+ goto bail_out;
}
Dmsg0(120, "Connected to file daemon\n");
fd = ua->jcr->file_bsock;
ua->send_msg("%s", fd->msg);
}
fd->signal(BNET_TERMINATE);
+
+bail_out:
free_bsock(ua->jcr->file_bsock);
return;
}
POOL_MEM esc1, esc2, esc3;
JCR *jcr = ua->jcr;
int i;
+ bool ret = false;
+ CLIENT *old_client = jcr->client;
Dmsg0(200, "dot_querycmd()\n");
if (!connect_to_file_daemon(jcr, 1, 15, 0)) {
ua->error_msg(_("error=Failed to connect to Client.\n"));
- return false;
+ goto bail_out;
}
if (!jcr->file_bsock->fsend("query parameter=%s plugin=%s value=%s\n",
ua->send_msg("%s", jcr->file_bsock->msg);
}
+ ret = true;
+
bail_out:
if (jcr->file_bsock) {
jcr->file_bsock->signal(BNET_TERMINATE);
free_bsock(ua->jcr->file_bsock);
}
- return true;
+ jcr->client = old_client;
+ return ret;
}
static bool tagscmd(UAContext *ua, const char *cmd)