X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Flib%2Fbget_msg.c;h=f9a6d5660e42e7ffbdd07f03c91917fa1a77a2bd;hb=a84ce1aa4c55f255e02a1c5f76c1e0284459c3b1;hp=e0084533ffa244155f95b07ca06047132120177c;hpb=fce6a648a27ee86f6941a5085ec7909f6d43e725;p=bacula%2Fbacula diff --git a/bacula/src/lib/bget_msg.c b/bacula/src/lib/bget_msg.c index e0084533ff..f9a6d5660e 100644 --- a/bacula/src/lib/bget_msg.c +++ b/bacula/src/lib/bget_msg.c @@ -1,3 +1,30 @@ +/* + Bacula® - The Network Backup Solution + + Copyright (C) 2001-2007 Free Software Foundation Europe e.V. + + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation and included + in the file LICENSE. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of Kern Sibbald. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ /* * Subroutines to receive network data and handle * network signals for the FD and the SD. @@ -7,30 +34,11 @@ * Version $Id$ * */ -/* - Copyright (C) 2001-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 - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. - - */ #include "bacula.h" /* pull in global headers */ -extern char OK_msg[]; -extern char TERM_msg[]; +static char OK_msg[] = "2000 OK\n"; +static char TERM_msg[] = "2999 Terminate\n"; #define msglvl 500 @@ -43,57 +51,57 @@ extern char TERM_msg[]; * Returns number of bytes read (may return zero) * Returns -1 on signal (BNET_SIGNAL) * Returns -2 on hard end of file (BNET_HARDEOF) - * Returns -3 on error (BNET_ERROR) + * Returns -3 on error (BNET_ERROR) */ int bget_msg(BSOCK *sock) { int n; for ( ;; ) { - n = bnet_recv(sock); - if (n >= 0) { /* normal return */ - return n; + n = sock->recv(); + if (n >= 0) { /* normal return */ + return n; } if (is_bnet_stop(sock)) { /* error return */ - return n; + return n; } /* BNET_SIGNAL (-1) return from bnet_recv() => network signal */ switch (sock->msglen) { - case BNET_EOD: /* end of data */ - Dmsg0(msglvl, "Got BNET_EOD\n"); - return n; + case BNET_EOD: /* end of data */ + Dmsg0(msglvl, "Got BNET_EOD\n"); + return n; case BNET_EOD_POLL: - Dmsg0(msglvl, "Got BNET_EOD_POLL\n"); - if (sock->terminated) { - bnet_fsend(sock, TERM_msg); - } else { - bnet_fsend(sock, OK_msg); /* send response */ - } - return n; /* end of data */ + Dmsg0(msglvl, "Got BNET_EOD_POLL\n"); + if (sock->is_terminated()) { + sock->fsend(TERM_msg); + } else { + sock->fsend(OK_msg); /* send response */ + } + return n; /* end of data */ case BNET_TERMINATE: - Dmsg0(msglvl, "Got BNET_TERMINATE\n"); - sock->terminated = 1; - return n; + Dmsg0(msglvl, "Got BNET_TERMINATE\n"); + sock->set_terminated(); + return n; case BNET_POLL: - Dmsg0(msglvl, "Got BNET_POLL\n"); - if (sock->terminated) { - bnet_fsend(sock, TERM_msg); - } else { - bnet_fsend(sock, OK_msg); /* send response */ - } - break; + Dmsg0(msglvl, "Got BNET_POLL\n"); + if (sock->is_terminated()) { + sock->fsend(TERM_msg); + } else { + sock->fsend(OK_msg); /* send response */ + } + break; case BNET_HEARTBEAT: case BNET_HB_RESPONSE: - break; + break; case BNET_STATUS: - /* *****FIXME***** Implement BNET_STATUS */ - Dmsg0(msglvl, "Got BNET_STATUS\n"); - bnet_fsend(sock, _("Status OK\n")); - bnet_sig(sock, BNET_EOD); - break; + /* *****FIXME***** Implement BNET_STATUS */ + Dmsg0(msglvl, "Got BNET_STATUS\n"); + sock->fsend(_("Status OK\n")); + sock->signal(BNET_EOD); + break; default: - Emsg1(M_ERROR, 0, _("bget_msg: unknown signal %d\n"), sock->msglen); - break; + Emsg1(M_ERROR, 0, _("bget_msg: unknown signal %d\n"), sock->msglen); + break; } } }