n = bnet_recv(bs);
Dmsg2(120, "bget_msg %d: %s\n", n, bs->msg);
- if (n < 0) {
- return n; /* error return */
+ if (is_bnet_stop(bs)) {
+ return n; /* error or terminate */
}
- if (n == 0) { /* handle signal */
- /* 0 return from bnet_recv() => network signal */
+ if (n == BNET_SIGNAL) { /* handle signal */
+ /* BNET_SIGNAL (-1) return from bnet_recv() => network signal */
switch (bs->msglen) {
- case BNET_NONO: /* for compatibility */
- case BNET_EOD: /* end of data */
- return 0;
- case BNET_EOD_POLL:
- bnet_fsend(bs, OK_msg);/* send response */
- return 0; /* end of data */
- case BNET_TERMINATE:
- bs->terminated = 1;
- return 0;
- case BNET_POLL:
- bnet_fsend(bs, OK_msg); /* send response */
- break;
- case BNET_HEARTBEAT:
- bnet_sig(bs, BNET_HB_RESPONSE);
- break;
- case BNET_STATUS:
- /* *****FIXME***** Implement */
- bnet_fsend(bs, "Status OK\n");
- bnet_sig(bs, BNET_EOD);
- break;
- default:
- Emsg1(M_WARNING, 0, _("bget_msg: unknown signal %d\n"), bs->msglen);
- return 0;
+ case BNET_EOD: /* end of data */
+ return n;
+ case BNET_EOD_POLL:
+ bnet_fsend(bs, OK_msg);/* send response */
+ return n; /* end of data */
+ case BNET_TERMINATE:
+ bs->terminated = 1;
+ return n;
+ case BNET_POLL:
+ bnet_fsend(bs, OK_msg); /* send response */
+ break;
+ case BNET_HEARTBEAT:
+ case BNET_HB_RESPONSE:
+ break;
+ case BNET_STATUS:
+ /* *****FIXME***** Implement */
+ bnet_fsend(bs, "Status OK\n");
+ bnet_sig(bs, BNET_EOD);
+ break;
+ default:
+ Emsg1(M_WARNING, 0, _("bget_msg: unknown signal %d\n"), bs->msglen);
+ return n;
}
continue;
}
Emsg1(M_ERROR, 0, _("Job not found: %s\n"), bs->msg);
continue;
}
+ Dmsg1(200, "Getmsg got jcr 0x%x\n", jcr);
/* Skip past "Jmsg Job=nnn" */
if (!(msg=find_msg_start(bs->msg))) {
* CatReq Job=nn Catalog-Request-Message
*/
if (bs->msg[0] == 'C') { /* Catalog request */
- Dmsg1(120, "Catalog req: %s", bs->msg);
+ Dmsg2(120, "Catalog req jcr 0x%x: %s", jcr, bs->msg);
catalog_request(jcr, bs, msg);
+ Dmsg1(200, "Calling freejcr 0x%x\n", jcr);
free_jcr(jcr);
continue;
}
if (bs->msg[0] == 'U') { /* Catalog update */
+ Dmsg2(120, "Catalog upd jcr 0x%x: %s", jcr, bs->msg);
catalog_update(jcr, bs, msg);
+ Dmsg1(200, "Calling freejcr 0x%x\n", jcr);
free_jcr(jcr);
continue;
}
* Returns: 0 on failure
* 1 on success
*/
-int response(BSOCK *fd, char *resp, char *cmd)
+int response(BSOCK *fd, char *resp, char *cmd, int prtmsg)
{
int n;
- if (fd->errors) {
+ if (is_bnet_error(fd)) {
return 0;
}
- if ((n = bget_msg(fd, 0)) > 0) {
+ if ((n = bget_msg(fd, 0)) >= 0) {
Dmsg0(110, fd->msg);
if (strcmp(fd->msg, resp) == 0) {
return 1;
}
- Emsg3(M_FATAL, 0, _("<filed: bad response to %s command: wanted %s got: %s\n"),
- cmd, resp, fd->msg);
+ if (prtmsg) {
+ Emsg3(M_FATAL, 0, _("FD gave bad response to %s command: wanted %s got: %s\n"),
+ cmd, resp, fd->msg);
+ }
return 0;
}
- Emsg2(M_FATAL, 0, _("<filed: Socket error from Filed on %s command: ERR=%s\n"),
+ Emsg2(M_FATAL, 0, _("Socket error from Filed on %s command: ERR=%s\n"),
cmd, bnet_strerror(fd));
return 0;
}