Date: Wed, 31 Jan 2024 16:11:34 GMT From: Dan Langille <dvl@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: 3c57e9fa97a0 - main - sysutils/bacula13-server: Add upstream patch Message-ID: <202401311611.40VGBYKZ021736@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by dvl: URL: https://cgit.FreeBSD.org/ports/commit/?id=3c57e9fa97a073c2911a6b3c76161376d3d185f6 commit 3c57e9fa97a073c2911a6b3c76161376d3d185f6 Author: Dan Langille <dvl@FreeBSD.org> AuthorDate: 2024-01-31 16:08:51 +0000 Commit: Dan Langille <dvl@FreeBSD.org> CommitDate: 2024-01-31 16:11:31 +0000 sysutils/bacula13-server: Add upstream patch If you are using bacula-fd < 13.x, this is a required update for you. Not all warnings from a bacula < 13 client are seen when running with bacula-server >= 13.x See: https://gitlab.bacula.org/bacula-community-edition/bacula-community/-/issues/2704 --- sysutils/bacula13-server/Makefile | 1 + .../files/patch-src_dird_fd__cmds.c | 46 ++++++++++++++++++++++ .../bacula13-server/files/patch-src_dird_getmsg.c | 17 ++++++++ sysutils/bacula13-server/files/patch-src_jcr.h | 10 +++++ 4 files changed, 74 insertions(+) diff --git a/sysutils/bacula13-server/Makefile b/sysutils/bacula13-server/Makefile index 1fcc10f551ee..6d239e2ed9a1 100644 --- a/sysutils/bacula13-server/Makefile +++ b/sysutils/bacula13-server/Makefile @@ -1,5 +1,6 @@ PORTNAME= bacula DISTVERSION= 13.0.3 +PORTREVISION= 1 CATEGORIES?= sysutils MASTER_SITES= SF/bacula/bacula/${PORTVERSION} PKGNAMEPREFIX?= # diff --git a/sysutils/bacula13-server/files/patch-src_dird_fd__cmds.c b/sysutils/bacula13-server/files/patch-src_dird_fd__cmds.c new file mode 100644 index 000000000000..ecd0a9ddbb04 --- /dev/null +++ b/sysutils/bacula13-server/files/patch-src_dird_fd__cmds.c @@ -0,0 +1,46 @@ +--- src/dird/fd_cmds.c.orig 2023-05-02 09:50:49 UTC ++++ src/dird/fd_cmds.c +@@ -72,6 +72,34 @@ static void delete_bsock_end_cb(JCR *jcr, void *ctx) + free_bsock(socket); + } + ++/* 16.0.10 (12Jan24) x86_64-pc-linux-gnu,ubuntu,20.04 -> 160010 */ ++static uint64_t scan_version(char *str) ++{ ++ Enter(0); ++ uint64_t version = 0; ++ ++ regex_t r1; ++ regmatch_t pmatch[16]; ++ regcomp(&r1, "^([0-9]+)\\.([0-9]+)\\.([0-9]+)", REG_EXTENDED); ++ if (regexec(&r1, str, 4, pmatch, 0) == 0 && ++ pmatch[1].rm_so == 0 && pmatch[1].rm_eo > 0 && pmatch[1].rm_eo < 50 && ++ pmatch[2].rm_so > 0 && pmatch[2].rm_eo > 0 && (pmatch[2].rm_eo - pmatch[2].rm_so) < 50 && ++ pmatch[3].rm_so > 0 && pmatch[3].rm_eo > 0 && (pmatch[3].rm_eo - pmatch[3].rm_so) < 50) ++ { ++ char buf[50]; ++ bstrncpy(buf, str + pmatch[1].rm_so, pmatch[1].rm_eo - pmatch[1].rm_so + 1); ++ version = str_to_uint64(buf) * 10000; ++ ++ bstrncpy(buf, str + pmatch[2].rm_so, pmatch[2].rm_eo - pmatch[2].rm_so + 1); ++ version += str_to_uint64(buf) * 100; ++ ++ bstrncpy(buf, str + pmatch[3].rm_so, pmatch[3].rm_eo - pmatch[3].rm_so + 1); ++ version += str_to_uint64(buf); ++ } ++ regfree(&r1); ++ return version; ++} ++ + /* + * Open connection with File daemon. + * Try connecting every retry_interval (default 10 sec), and +@@ -195,6 +223,8 @@ int connect_to_file_daemon(JCR *jcr, int retry_interva + cr.FileRetention = jcr->client->FileRetention; + cr.JobRetention = jcr->client->JobRetention; + bstrncpy(cr.Uname, fd->msg+strlen(OKjob)+1, sizeof(cr.Uname)); ++ jcr->client_version = scan_version(cr.Uname); ++ + if (!db_update_client_record(jcr, jcr->db, &cr)) { + Jmsg(jcr, M_WARNING, 0, _("Error updating Client record. ERR=%s\n"), + db_strerror(jcr->db)); diff --git a/sysutils/bacula13-server/files/patch-src_dird_getmsg.c b/sysutils/bacula13-server/files/patch-src_dird_getmsg.c new file mode 100644 index 000000000000..2ee3adae7320 --- /dev/null +++ b/sysutils/bacula13-server/files/patch-src_dird_getmsg.c @@ -0,0 +1,17 @@ +--- src/dird/getmsg.c.orig 2023-05-02 09:50:49 UTC ++++ src/dird/getmsg.c +@@ -251,6 +251,14 @@ int bget_dirmsg(JCR *jcr, BSOCK *bs, BSOCK_CLIENT_TYPE + if (*msg == ' ') { + msg++; /* skip leading space */ + } ++ /* Fix to support old FDs */ ++ if (role == BSOCK_TYPE_FD && jcr->client_version > 0 && jcr->client_version < 130000) { ++ type = type + 1; /* Adding M_EVENTS pushed all old events by 1, we fix it automatically here */ ++ } ++ if (type == M_ABORT) { // not allowed here ++ Jmsg1(jcr, M_ERROR, 0, _("Malformed message: %s\n"), bs->msg); ++ continue; ++ } + Dmsg1(900, "Dispatch msg: %s", msg); + dispatch_message(jcr, type, mtime, msg); + continue; diff --git a/sysutils/bacula13-server/files/patch-src_jcr.h b/sysutils/bacula13-server/files/patch-src_jcr.h new file mode 100644 index 000000000000..10d7432088b2 --- /dev/null +++ b/sysutils/bacula13-server/files/patch-src_jcr.h @@ -0,0 +1,10 @@ +--- src/jcr.h.orig 2023-05-02 09:50:49 UTC ++++ src/jcr.h +@@ -399,6 +399,7 @@ class JCR { (public) + int32_t FDVersion; /* File daemon version number */ + int32_t SDVersion; /* Storage daemon version number */ + int64_t spool_size; /* Spool size for this job */ ++ uint64_t client_version; /* Client version as a number */ + utime_t snapshot_retention; /* Snapshot retention (from Client/Job resource) */ + volatile bool sd_msg_thread_done; /* Set when Storage message thread done */ + bool wasVirtualFull; /* set if job was VirtualFull */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202401311611.40VGBYKZ021736>