Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information
Showing
4 changed files
with
74 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 */ |