X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fgetmsg.c;h=f0da7debfbd79db3172c7801ee6ee33e38c6aa51;hb=9f9219844777d0ffa3182869d0d2a778e51984ef;hp=8383a7ab5b7e139731db5c908383a07b1ae3c7af;hpb=ad240c831eef5857ddc5bb0c59a8272323f8fbc9;p=bacula%2Fbacula diff --git a/bacula/src/dird/getmsg.c b/bacula/src/dird/getmsg.c index 8383a7ab5b..f0da7debfb 100644 --- a/bacula/src/dird/getmsg.c +++ b/bacula/src/dird/getmsg.c @@ -21,7 +21,7 @@ * Version $Id$ */ /* - Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker + Copyright (C) 2000-2004 Kern Sibbald and John Walker This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -64,7 +64,7 @@ static char OK_msg[] = "1000 OK\n"; * any message beginning with Jmsg will be processed. * */ -int32_t bget_msg(BSOCK *bs, int rtn) +int bget_dirmsg(BSOCK *bs) { int32_t n; char Job[MAX_NAME_LENGTH]; @@ -75,7 +75,7 @@ int32_t bget_msg(BSOCK *bs, int rtn) for (;;) { n = bnet_recv(bs); - Dmsg2(120, "bget_msg %d: %s\n", n, bs->msg); + Dmsg2(120, "bget_dirmsg %d: %s\n", n, bs->msg); if (is_bnet_stop(bs)) { return n; /* error or terminate */ @@ -95,15 +95,22 @@ int32_t bget_msg(BSOCK *bs, int rtn) bnet_fsend(bs, OK_msg); /* send response */ break; case BNET_HEARTBEAT: +// encode_time(time(NULL), Job); +// Dmsg1(100, "%s got heartbeat.\n", Job); + break; case BNET_HB_RESPONSE: break; case BNET_STATUS: - /* *****FIXME***** Implement */ + /* *****FIXME***** Implement more completely */ bnet_fsend(bs, "Status OK\n"); bnet_sig(bs, BNET_EOD); break; + case BNET_BTIME: /* send Bacula time */ + char ed1[50]; + bnet_fsend(bs, "btime %s\n", edit_uint64(get_current_btime(),ed1)); + break; default: - Emsg1(M_WARNING, 0, _("bget_msg: unknown signal %d\n"), bs->msglen); + Emsg1(M_WARNING, 0, _("bget_dirmsg: unknown bnet signal %d\n"), bs->msglen); return n; } continue; @@ -111,7 +118,7 @@ int32_t bget_msg(BSOCK *bs, int rtn) /* Handle normal data */ - if (B_ISDIGIT(bs->msg[0])) { /* response? */ + if (n > 0 && B_ISDIGIT(bs->msg[0])) { /* response? */ return n; /* yes, return it */ } @@ -207,25 +214,25 @@ static char *find_msg_start(char *msg) * Returns: 0 on failure * 1 on success */ -int response(BSOCK *fd, char *resp, char *cmd, int prtmsg) +int response(JCR *jcr, BSOCK *fd, char *resp, char *cmd, e_prtmsg prtmsg) { int n; if (is_bnet_error(fd)) { return 0; } - if ((n = bget_msg(fd, 0)) >= 0) { + if ((n = bget_dirmsg(fd)) >= 0) { Dmsg0(110, fd->msg); if (strcmp(fd->msg, resp) == 0) { return 1; } - if (prtmsg) { - Emsg3(M_FATAL, 0, _("FD gave bad response to %s command: wanted %s got: %s\n"), + if (prtmsg == DISPLAY_ERROR) { + Jmsg(jcr, 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, _("Socket error from Filed on %s command: ERR=%s\n"), + Jmsg(jcr, M_FATAL, 0, _("Socket error from Filed on %s command: ERR=%s\n"), cmd, bnet_strerror(fd)); return 0; }