diff --git a/.gitignore b/.gitignore
index ad4a527..8a200b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
-SOURCES/qpid-proton-0.31.0.tar.gz
-SOURCES/rsyslog-8.1911.0.tar.gz
-SOURCES/rsyslog-doc-8.1911.0.tar.gz
+SOURCES/qpid-proton-0.34.0.tar.gz
+SOURCES/rsyslog-8.2102.0.tar.gz
+SOURCES/rsyslog-doc-8.2102.0.tar.gz
diff --git a/.rsyslog.metadata b/.rsyslog.metadata
index 1e19d69..e0fc0e7 100644
--- a/.rsyslog.metadata
+++ b/.rsyslog.metadata
@@ -1,3 +1,3 @@
-8714235747ec8947648448eecda57e97d3a733ce SOURCES/qpid-proton-0.31.0.tar.gz
-30dfc2b99d73598788e2bd0d0ac45e16e7c3a3d5 SOURCES/rsyslog-8.1911.0.tar.gz
-8bcb23571ab8011b712ccf52acee20f8940b7f03 SOURCES/rsyslog-doc-8.1911.0.tar.gz
+390e5cb87a6331cf0ce451d7f6552e2c0d97f706 SOURCES/qpid-proton-0.34.0.tar.gz
+fdda78ed808e7a0dca03ead9227a0a5d913a050f SOURCES/rsyslog-8.2102.0.tar.gz
+9c2188d435cb5f79c1c35749003bd2a61e7f2d07 SOURCES/rsyslog-doc-8.2102.0.tar.gz
diff --git a/SOURCES/rsyslog-8.1911.0-rhbz1659383-config-enabled-error.patch b/SOURCES/rsyslog-8.1911.0-rhbz1659383-config-enabled-error.patch
deleted file mode 100644
index 145378b..0000000
--- a/SOURCES/rsyslog-8.1911.0-rhbz1659383-config-enabled-error.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From ba5b68be84888b24918dd019b87ed9f62d7fa988 Mon Sep 17 00:00:00 2001
-From: Jiri Vymazal <jvymazal@redhat.com>
-Date: Tue, 11 Feb 2020 13:46:23 +0100
-Subject: [PATCH] Fixed processing of 'cofig.enabled' directive
-
-Previously the directive was processed way too late which caused
-false errors whenever it was set to 'off' and possibly other
-problems.
----
- grammar/rainerscript.c | 43+++++++++++++++++++++++----------------
- grammar/rainerscript.h |  1 +
- runtime/rsconf.c       | 10 +++++++++
- 3 files changed, 38 insertions(+), 18 deletions(-)
-
-diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
-index 8f14bbe319..4398e6011a 100644
---- a/grammar/rainerscript.c
-+++ b/grammar/rainerscript.c
-@@ -699,6 +699,22 @@ nvlstFindNameCStr(struct nvlst *lst, const char *const __restrict__ name)
- 	return lst;
- }
- 
-+/* check if the nvlst is disabled, and mark config.enabled directive
-+ * as used if it is not. Returns 1 if block is disabled, 0 otherwise.
-+ */
-+int nvlstChkDisabled(struct nvlst *lst)
-+{
-+	struct nvlst *valnode;
-+
-+	if((valnode = nvlstFindNameCStr(lst, "config.enabled")) != NULL) {
-+		lst->bUsed = 1;
-+		if(es_strbufcmp(valnode->val.d.estr, (unsigned char*) "on", 2)) {
-+			return 1;
-+		}
-+	}
-+	return 0;
-+}
-+
- 
- /* check if there are duplicate names inside a nvlst and emit
-  * an error message, if so.
-@@ -1207,21 +1224,6 @@ nvlstGetParams(struct nvlst *lst, struct cnfparamblk *params,
- 		}
- 	}
- 
--	/* now config-system parameters (currently a bit hackish, as we
--	 * only have one...). -- rgerhards, 2018-01-24
--	 */
--	if((valnode = nvlstFindNameCStr(lst, "config.enabled")) != NULL) {
--		if(es_strbufcmp(valnode->val.d.estr, (unsigned char*) "on", 2)) {
--			dbgprintf("config object disabled by configuration\n");
--			/* flag all params as used to not emit error mssages */
--			bInError = 1;
--			struct nvlst *val;
--			for(val = lst; val != NULL ; val = val->next) {
--				val->bUsed = 1;
--			}
--		}
--	}
--
- 	/* done parameter processing */
- 	if(bInError) {
- 		if(bValsWasNULL)
-@@ -4418,8 +4418,13 @@ cnfstmtNewAct(struct nvlst *lst)
- 	struct cnfstmt* cnfstmt;
- 	char namebuf[256];
- 	rsRetVal localRet;
--	if((cnfstmt = cnfstmtNew(S_ACT)) == NULL)
-+	if((cnfstmt = cnfstmtNew(S_ACT)) == NULL) {
- 		goto done;
-+	}
-+	if (nvlstChkDisabled(lst)) {
-+		dbgprintf("action disabled by configuration\n");
-+		cnfstmt->nodetype = S_NOP;
-+	}
- 	localRet = actionNewInst(lst, &cnfstmt->d.act);
- 	if(localRet == RS_RET_OK_WARN) {
- 		parser_errmsg("warnings occured in file '%s' around line %d",
-@@ -5284,6 +5289,11 @@ includeProcessCnf(struct nvlst *const lst)
- 		goto done;
- 	}
- 
-+	if (nvlstChkDisabled(lst)) {
-+		DBGPRINTF("include statement disabled\n");
-+		goto done;
-+	}
-+
- 	pvals = nvlstGetParams(lst, &incpblk, NULL);
- 	if(pvals == NULL) {
- 		goto done;
-diff --git a/grammar/rainerscript.h b/grammar/rainerscript.h
-index bfa8ee6cb9..0f8128861b 100644
---- a/grammar/rainerscript.h
-+++ b/grammar/rainerscript.h
-@@ -340,6 +340,7 @@ void nvlstDestruct(struct nvlst *lst);
- void nvlstPrint(struct nvlst *lst);
- void nvlstChkUnused(struct nvlst *lst);
- struct nvlst* nvlstFindName(struct nvlst *lst, es_str_t *name);
-+int nvlstChkDisabled(struct nvlst *lst);
- struct cnfobj* cnfobjNew(enum cnfobjType objType, struct nvlst *lst);
- void cnfobjDestruct(struct cnfobj *o);
- void cnfobjPrint(struct cnfobj *o);
-diff --git a/runtime/rsconf.c b/runtime/rsconf.c
-index fc0863a738..303e06365b 100644
---- a/runtime/rsconf.c
-+++ b/runtime/rsconf.c
-@@ -438,6 +438,16 @@ cnfDoObj(struct cnfobj *const o)
- 
- 	dbgprintf("cnf:global:obj: ");
- 	cnfobjPrint(o);
-+
-+	/* We need to check for object disabling as early as here to cover most
-+	 * of them at once and avoid needless initializations
-+	 * - jvymazal 2020-02-12
-+	 */
-+	if (nvlstChkDisabled(o->nvlst)) {
-+		dbgprintf("object disabled by configuration\n");
-+		return;
-+	}
-+
- 	switch(o->objType) {
- 	case CNFOBJ_GLOBAL:
- 		glblProcessCnf(o);
diff --git a/SOURCES/rsyslog-8.1911.0-rhbz1763757-imfile-statefiles.patch b/SOURCES/rsyslog-8.1911.0-rhbz1763757-imfile-statefiles.patch
deleted file mode 100644
index 6e18e63..0000000
--- a/SOURCES/rsyslog-8.1911.0-rhbz1763757-imfile-statefiles.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From ac30968b7858d4ca3743d2b4d296eca543864fe2 Mon Sep 17 00:00:00 2001
-From: Jiri Vymazal <jvymazal@redhat.com>
-Date: Fri, 22 Nov 2019 14:25:59 +0100
-Subject: [PATCH] Thorougher state-file renaming and cleaning
-
-Now checking if file-id changes and reanming - cleaning state file
-accordingly and always checking and cleaning old inode-only style
-state files.
----
- plugins/imfile/imfile.c | 66 +++++++++++++++++++++++++++--------------
- 1 file changed, 43 insertions(+), 23 deletions(-)
-
-diff --git a/plugins/imfile/imfile.c b/plugins/imfile/imfile.c
-index d9bf0fbb6d..9db2b47ac9 100644
---- a/plugins/imfile/imfile.c
-+++ b/plugins/imfile/imfile.c
-@@ -182,6 +182,7 @@ struct act_obj_s {
- 	time_t timeoutBase; /* what time to calculate the timeout against? */
- 	/* file dynamic data */
- 	char file_id[FILE_ID_HASH_SIZE]; /* file id for this entry, once we could obtain it */
-+	char file_id_prev[FILE_ID_HASH_SIZE]; /* previous file id for this entry, set if changed */
- 	int in_move;	/* workaround for inotify move: if set, state file must not be deleted */
- 	ino_t ino;	/* current inode nbr */
- 	int fd;		/* fd to file in order to obtain file_id (needs to be preserved across move) */
-@@ -711,7 +712,7 @@ act_obj_add(fs_edge_t *const edge, const char *const name, const int is_file,
- 		if (is_file) {
- 			LogError(errno, RS_RET_ERR, "imfile: error accessing file '%s'", name);
- 		} else { /* reporting only in debug for dirs as higher lvl paths are likely blocked by selinux */
--			DBGPRINTF("imfile: error accessing file '%s'", name);
-+			DBGPRINTF("imfile: error accessing directory '%s'", name);
- 		}
- 		FINALIZE;
- 	}
-@@ -727,6 +728,7 @@ act_obj_add(fs_edge_t *const edge, const char *const name, const int is_file,
- 	act->ino = ino;
- 	act->fd = fd;
- 	act->file_id[0] = '\0';
-+	act->file_id_prev[0] = '\0';
- 	act->is_symlink = is_symlink;
- 	if (source) { /* we are target of symlink */
- 		CHKmalloc(act->source_name = strdup(source));
-@@ -1256,17 +1258,15 @@ get_file_id_hash(const char *data, size_t lendata,
- static void ATTR_NONNULL(1)
- getFileID(act_obj_t *const act)
- {
--	if(act->file_id[0] != '\0') {
--		return; /* everything already done */
--	}
-+	/* save the old id for cleaning purposes */
-+	strncpy(act->file_id_prev, (const char*)act->file_id, FILE_ID_HASH_SIZE);
-+	act->file_id[0] = '\0';
- 	assert(act->fd >= 0); /* fd must have been opened at act_obj_t creation! */
- 	char filedata[FILE_ID_SIZE];
-+	lseek(act->fd, 0, SEEK_SET); /* Seek to beginning of file so we have correct id */
- 	const int r = read(act->fd, filedata, FILE_ID_SIZE);
- 	if(r == FILE_ID_SIZE) {
- 		get_file_id_hash(filedata, sizeof(filedata), act->file_id, sizeof(act->file_id));
--		dbgprintf("file_id '%s' obtained, closing monitoring file handle\n", act->file_id);
--		close(act->fd); /* we will never go here! */
--		act->fd = -1;
- 	} else {
- 		DBGPRINTF("getFileID partial or error read, ret %d\n", r);
- 	}
-@@ -1378,28 +1378,13 @@ openFileWithStateFile(act_obj_t *const act)
- 	if(fd < 0) {
- 		if(errno == ENOENT) {
- 			if(act->file_id[0] != '\0') {
--				const char *pszSFNamHash = strdup((const char*)pszSFNam);
--				CHKmalloc(pszSFNamHash);
- 				DBGPRINTF("state file %s for %s does not exist - trying to see if "
- 					"inode-only file exists\n", pszSFNam, act->name);
- 				getFullStateFileName(statefn, "", pszSFNam, sizeof(pszSFNam));
- 				fd = open((char*)pszSFNam, O_CLOEXEC | O_NOCTTY | O_RDONLY, 0600);
- 				if(fd >= 0) {
--					dbgprintf("found inode-only state file, renaming it now that we "
--						"know the file_id, new name: %s\n", pszSFNamHash);
--					/* we now can use identify the file, so let's rename it */
--					if(rename((const char*)pszSFNam, pszSFNamHash) != 0) {
--						LogError(errno, RS_RET_IO_ERROR,
--							"imfile error trying to rename state file for '%s' - "
--							"ignoring this error, usually this means a file no "
--							"longer file is left over, but this may also cause "
--							"some real trouble. Still the best we can do ",
--							act->name);
--						free((void*) pszSFNamHash);
--						ABORT_FINALIZE(RS_RET_IO_ERROR);
--					}
-+					dbgprintf("found inode-only state file, will be renamed at next persist\n");
- 				}
--				free((void*) pszSFNamHash);
- 			}
- 			if(fd < 0) {
- 				DBGPRINTF("state file %s for %s does not exist - trying to see if "
-@@ -2609,6 +2594,36 @@ atomicWriteStateFile(const char *fn, const char *content)
- 	RETiRet;
- }
- 
-+/* This function should be called after any file ID change - that is if
-+ * file grown from hash-only statefile, or was truncated, this will ensure
-+ * we delete the old file so we do not make garbage in our working dir and
-+ * there are no leftover statefiles which can in theory later bind to something
-+ * and cause data loss.
-+ * jvymazal 2019-11-27
-+ */
-+static void
-+removeOldStatefile(const uchar *statefn, const char *hashToDelete)
-+{
-+	int ret;
-+	uchar statefname[MAXFNAME];
-+
-+	getFullStateFileName(statefn, hashToDelete, statefname, sizeof(statefname));
-+	DBGPRINTF("removing old state file: '%s'\n", statefname);
-+	ret = unlink((const char*)statefname);
-+	if(ret != 0) {
-+		if (errno != ENOENT) {
-+			LogError(errno, RS_RET_IO_ERROR,
-+				"imfile error trying to delete old state file: '%s' - ignoring this "
-+				"error, usually this means a file no longer file is left over, but "
-+				"this may also cause some real trouble. Still the best we can do ",
-+				statefname);
-+		} else {
-+			DBGPRINTF("trying to delete no longer valid statefile '%s' which no "
-+					  "longer exists (probably already deleted)\n", statefname);
-+		}
-+	}
-+}
-+
- 
- /* This function persists information for a specific file being monitored.
-  * To do so, it simply persists the stream object. We do NOT abort on error
-@@ -2660,6 +2675,11 @@ persistStrmState(act_obj_t *const act)
- 	CHKiRet(atomicWriteStateFile((const char*)statefname, jstr));
- 	json_object_put(json);
- 
-+	/* file-id changed remove the old statefile */
-+	if (strncmp((const char *)act->file_id_prev, (const char *)act->file_id, FILE_ID_HASH_SIZE)) {
-+		removeOldStatefile(statefn, act->file_id_prev);
-+	}
-+
- finalize_it:
- 	if(iRet != RS_RET_OK) {
- 		LogError(0, iRet, "imfile: could not persist state "
diff --git a/SOURCES/rsyslog-8.1911.0-rhbz1782353-deny-expired-by-default.patch b/SOURCES/rsyslog-8.1911.0-rhbz1782353-deny-expired-by-default.patch
deleted file mode 100644
index 8700dff..0000000
--- a/SOURCES/rsyslog-8.1911.0-rhbz1782353-deny-expired-by-default.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 0de93c9e1597b20f71bb61d5375ded546cfd2fa8 Mon Sep 17 00:00:00 2001
-From: Jiri Vymazal <jvymazal@redhat.com>
-Date: Wed, 11 Dec 2019 15:35:26 +0100
-Subject: [PATCH] Changed default for permitExpiredCerts to "off"
-
-This is to be conssitent with rsyslog's prior behavior where
-expired certs were automatically rejected
----
- runtime/nsd_gtls.c | 10 +++++-----
- runtime/nsd_ossl.c |  8 ++++----
- 2 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c
-index 5df12994d1..2be0ca9c92 100644
---- a/runtime/nsd_gtls.c
-+++ b/runtime/nsd_gtls.c
-@@ -1461,16 +1461,16 @@ SetPermitExpiredCerts(nsd_t *pNsd, uchar *mode)
- 	nsd_gtls_t *pThis = (nsd_gtls_t*) pNsd;
- 
- 	ISOBJ_TYPE_assert((pThis), nsd_gtls);
--	/* default is set to warn! */
--	if(mode == NULL || !strcasecmp((char*)mode, "warn")) {
--		pThis->permitExpiredCerts = GTLS_EXPIRED_WARN;
--	} else if(!strcasecmp((char*) mode, "off")) {
-+	/* default is set to off! */
-+	if(mode == NULL || !strcasecmp((char*)mode, "off")) {
- 		pThis->permitExpiredCerts = GTLS_EXPIRED_DENY;
-+	} else if(!strcasecmp((char*) mode, "warn")) {
-+		pThis->permitExpiredCerts = GTLS_EXPIRED_WARN;
- 	} else if(!strcasecmp((char*) mode, "on")) {
- 		pThis->permitExpiredCerts = GTLS_EXPIRED_PERMIT;
- 	} else {
- 		LogError(0, RS_RET_VALUE_NOT_SUPPORTED, "error: permitexpiredcerts mode '%s' not supported by "
--				"ossl netstream driver", mode);
-+				"gtls netstream driver", mode);
- 		ABORT_FINALIZE(RS_RET_VALUE_NOT_SUPPORTED);
- 	}
- 
-diff --git a/runtime/nsd_ossl.c b/runtime/nsd_ossl.c
-index 4f8dd845ab..ebb2537d72 100644
---- a/runtime/nsd_ossl.c
-+++ b/runtime/nsd_ossl.c
-@@ -1130,11 +1130,11 @@ SetPermitExpiredCerts(nsd_t *pNsd, uchar *mode)
- 	nsd_ossl_t *pThis = (nsd_ossl_t*) pNsd;
- 
- 	ISOBJ_TYPE_assert((pThis), nsd_ossl);
--	/* default is set to warn! */
--	if(mode == NULL || !strcasecmp((char*)mode, "warn")) {
--		pThis->permitExpiredCerts = OSSL_EXPIRED_WARN;
--	} else if(!strcasecmp((char*) mode, "off")) {
-+	/* default is set to off! */
-+	if(mode == NULL || !strcasecmp((char*)mode, "off")) {
- 		pThis->permitExpiredCerts = OSSL_EXPIRED_DENY;
-+	} else if(!strcasecmp((char*) mode, "warn")) {
-+		pThis->permitExpiredCerts = OSSL_EXPIRED_WARN;
- 	} else if(!strcasecmp((char*) mode, "on")) {
- 		pThis->permitExpiredCerts = OSSL_EXPIRED_PERMIT;
- 	} else {
diff --git a/SOURCES/rsyslog-8.1911.0-rhbz1789675-serialize-crash-race.patch b/SOURCES/rsyslog-8.1911.0-rhbz1789675-serialize-crash-race.patch
deleted file mode 100644
index da0fc3f..0000000
--- a/SOURCES/rsyslog-8.1911.0-rhbz1789675-serialize-crash-race.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From: Jiri Vymazal <jvymazal@redhat.com>
-Date: Wed, 18 Dec 2019 09:48:15 +0100
-Subject: [PATCH] Fix race condition related to libfastjson when using DA queue
-
-Rsyslogd aborts when writing to disk queue from multiple workers simultaneously.
-It is assumed that libfastjson is not thread-safe.
-Resolve libfastjson race condition when writing to disk queue.
-
-see also https://github.com/rsyslog/rsyslog/issues/4099
----
- runtime/msg.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/runtime/msg.c b/runtime/msg.c
-index b5c17cfdd4..f9da40005f 100644
---- a/runtime/msg.c
-+++ b/runtime/msg.c
-@@ -1242,11 +1242,15 @@ static rsRetVal MsgSerialize(smsg_t *pThis, strm_t *pStrm)
- 	psz = pThis->pszStrucData;
- 	CHKiRet(obj.SerializeProp(pStrm, UCHAR_CONSTANT("pszStrucData"), PROPTYPE_PSZ, (void*) psz));
- 	if(pThis->json != NULL) {
-+		MsgLock(pThis);
- 		psz = (uchar*) json_object_get_string(pThis->json);
-+		MsgUnlock(pThis);
- 		CHKiRet(obj.SerializeProp(pStrm, UCHAR_CONSTANT("json"), PROPTYPE_PSZ, (void*) psz));
- 	}
- 	if(pThis->localvars != NULL) {
-+		MsgLock(pThis);
- 		psz = (uchar*) json_object_get_string(pThis->localvars);
-+		MsgUnlock(pThis);
- 		CHKiRet(obj.SerializeProp(pStrm, UCHAR_CONSTANT("localvars"), PROPTYPE_PSZ, (void*) psz));
- 	}
- 
diff --git a/SOURCES/rsyslog-8.1911.0-rhbz1793569-imfile-file_id.patch b/SOURCES/rsyslog-8.1911.0-rhbz1793569-imfile-file_id.patch
deleted file mode 100644
index 0b12f52..0000000
--- a/SOURCES/rsyslog-8.1911.0-rhbz1793569-imfile-file_id.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0c69ec76d8cac47bcfa78abae86229ad63c92b0b Mon Sep 17 00:00:00 2001
-From: Jiri Vymazal <jvymazal@redhat.com>
-Date: Tue, 21 Jan 2020 13:58:14 +0100
-Subject: [PATCH] Fixed saving of old file_id for statefiles
-
-Previously we saved old file_id unconditionally, which led to not
-deleting old statefiles if files changes without rsyslog running.
-Now it should work correctly.
----
- plugins/imfile/imfile.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/plugins/imfile/imfile.c b/plugins/imfile/imfile.c
-index 908bb5901c..5ad44f6c59 100644
---- a/plugins/imfile/imfile.c
-+++ b/plugins/imfile/imfile.c
-@@ -1258,8 +1258,8 @@ get_file_id_hash(const char *data, size_t lendata,
- static void ATTR_NONNULL(1)
- getFileID(act_obj_t *const act)
- {
--	/* save the old id for cleaning purposes */
--	strncpy(act->file_id_prev, (const char*)act->file_id, FILE_ID_HASH_SIZE);
-+	char tmp_id[FILE_ID_HASH_SIZE];
-+	strncpy(tmp_id, (const char*)act->file_id, FILE_ID_HASH_SIZE);
- 	act->file_id[0] = '\0';
- 	assert(act->fd >= 0); /* fd must have been opened at act_obj_t creation! */
- 	char filedata[FILE_ID_SIZE];
-@@ -1270,6 +1270,9 @@ getFileID(act_obj_t *const act)
- 	} else {
- 		DBGPRINTF("getFileID partial or error read, ret %d\n", r);
- 	}
-+	if (strncmp(tmp_id, act->file_id, FILE_ID_HASH_SIZE)) {/* save the old id for cleaning purposes */
-+		strncpy(act->file_id_prev, tmp_id, FILE_ID_HASH_SIZE);
-+	}
- 	DBGPRINTF("getFileID for '%s', file_id_hash '%s'\n", act->name, act->file_id);
- }
- 
diff --git a/SOURCES/rsyslog-8.1911.0-rhbz1843994-imfile-selinux-symlink-crash.patch b/SOURCES/rsyslog-8.1911.0-rhbz1843994-imfile-selinux-symlink-crash.patch
deleted file mode 100644
index e95c892..0000000
--- a/SOURCES/rsyslog-8.1911.0-rhbz1843994-imfile-selinux-symlink-crash.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 89ff6436b55cd81c54dcb076490b0c4de98d508d Mon Sep 17 00:00:00 2001
-From: Jiri Vymazal <jvymazal@redhat.com>
-Date: Tue, 9 Jun 2020 12:09:59 +0200
-Subject: [PATCH] Fixing imfile segfaulting on selinux denial
-
-If imfile is denied access to file watched trough symlink there is
-unchecked condition resulting in access to not initialized memory.
----
- plugins/imfile/imfile.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/plugins/imfile/imfile.c b/plugins/imfile/imfile.c
-index f360bd290b..21d6546552 100644
---- a/plugins/imfile/imfile.c
-+++ b/plugins/imfile/imfile.c
-@@ -732,7 +732,7 @@ act_obj_add(fs_edge_t *const edge, const char *const name, const int is_file,
- 		} else { /* reporting only in debug for dirs as higher lvl paths are likely blocked by selinux */
- 			DBGPRINTF("imfile: error accessing directory '%s'", name);
- 		}
--		FINALIZE;
-+		ABORT_FINALIZE(RS_RET_NO_FILE_ACCESS);
- 	}
- 	DBGPRINTF("add new active object '%s' in '%s'\n", name, edge->path);
- 	CHKmalloc(act = calloc(sizeof(act_obj_t), 1));
diff --git a/SOURCES/rsyslog-8.1911.0-service.patch b/SOURCES/rsyslog-8.1911.0-service.patch
deleted file mode 100644
index 338a871..0000000
--- a/SOURCES/rsyslog-8.1911.0-service.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ./rsyslog.service.in.service ./rsyslog.service.in
---- ./rsyslog.service.in.service	2018-03-01 13:58:11.480598935 +0100
-+++ ./rsyslog.service.in	2018-03-01 13:58:25.433518607 +0100
-@@ -1,12 +1,16 @@
- [Unit]
- Description=System Logging Service
- Requires=syslog.socket
-+Wants=network.target network-online.target
-+After=network.target network-online.target
- Documentation=man:rsyslogd(8)
- Documentation=https://www.rsyslog.com/doc/
- 
- [Service]
- Type=notify
--ExecStart=@sbindir@/rsyslogd -n -iNONE
-+EnvironmentFile=-/etc/sysconfig/rsyslog
-+ExecStart=@sbindir@/rsyslogd -n $SYSLOGD_OPTIONS
-+UMask=0066
- StandardOutput=null
- Restart=on-failure
- 
diff --git a/SOURCES/rsyslog-8.2102.0-rhbz1866877-unexpected-length.patch b/SOURCES/rsyslog-8.2102.0-rhbz1866877-unexpected-length.patch
new file mode 100644
index 0000000..1b9fd47
--- /dev/null
+++ b/SOURCES/rsyslog-8.2102.0-rhbz1866877-unexpected-length.patch
@@ -0,0 +1,14 @@
+diff -up rsyslog-8.2102.0/plugins/imjournal/imjournal.c.orig rsyslog-8.2102.0/plugins/imjournal/imjournal.c
+--- rsyslog-8.2102.0/plugins/imjournal/imjournal.c.orig	2021-06-28 09:05:23.283262154 +0200
++++ rsyslog-8.2102.0/plugins/imjournal/imjournal.c	2021-06-28 09:10:05.858381106 +0200
+@@ -424,8 +424,8 @@ readjournal(void)
+ 				severity = cs.iDfltSeverity;
+ 			}
+ 		} else {
+-			LogError(0, RS_RET_ERR, "The value of the 'PRIORITY' field has an "
+-				"unexpected length: %zu\n", length);
++			DBGPRINTF("The value of the 'PRIORITY' field has an "
++				"unexpected length: %zu value: '%s'\n", length, (const char*)get);
+ 		}
+ 	}
+ 
diff --git a/SOURCES/rsyslog-8.2102.0-rhbz1886400-reduce-default-timeout.patch b/SOURCES/rsyslog-8.2102.0-rhbz1886400-reduce-default-timeout.patch
new file mode 100644
index 0000000..a847084
--- /dev/null
+++ b/SOURCES/rsyslog-8.2102.0-rhbz1886400-reduce-default-timeout.patch
@@ -0,0 +1,21 @@
+diff -up rsyslog-8.2102.0/plugins/omrelp/omrelp.c.orig rsyslog-8.2102.0/plugins/omrelp/omrelp.c
+--- rsyslog-8.2102.0/plugins/omrelp/omrelp.c.orig	2021-06-15 12:46:14.758589030 +0200
++++ rsyslog-8.2102.0/plugins/omrelp/omrelp.c	2021-06-15 12:47:08.130516632 +0200
+@@ -303,7 +303,7 @@ ENDfreeCnf
+ BEGINcreateInstance
+ CODESTARTcreateInstance
+ 	pData->sizeWindow = 0;
+-	pData->timeout = 90;
++	pData->timeout = 5;
+ 	pData->connTimeout = 10;
+ 	pData->rebindInterval = 0;
+ 	pData->bEnableTLS = DFLT_ENABLE_TLS;
+@@ -365,7 +365,7 @@ setInstParamDefaults(instanceData *pData
+ 	pData->target = NULL;
+ 	pData->port = NULL;
+ 	pData->tplName = NULL;
+-	pData->timeout = 90;
++	pData->timeout = 5;
+ 	pData->connTimeout = 10;
+ 	pData->sizeWindow = 0;
+ 	pData->rebindInterval = 0;
diff --git a/SOURCES/rsyslog-8.2102.0-rhbz1960536-fdleak-on-fsync.patch b/SOURCES/rsyslog-8.2102.0-rhbz1960536-fdleak-on-fsync.patch
new file mode 100644
index 0000000..f95dd5a
--- /dev/null
+++ b/SOURCES/rsyslog-8.2102.0-rhbz1960536-fdleak-on-fsync.patch
@@ -0,0 +1,20 @@
+diff -up rsyslog-8.2102.0/plugins/imjournal/imjournal.c.orig rsyslog-8.2102.0/plugins/imjournal/imjournal.c
+--- rsyslog-8.2102.0/plugins/imjournal/imjournal.c.orig	2021-06-15 12:30:35.238832058 +0200
++++ rsyslog-8.2102.0/plugins/imjournal/imjournal.c	2021-06-15 12:32:04.699721356 +0200
+@@ -565,6 +565,8 @@ persistJournalState(void)
+ 		ABORT_FINALIZE(RS_RET_IO_ERROR);
+ 	}
+ 
++	fflush(sf);
++
+ 	/* change the name of the file to the configured one */
+ 	if (rename(tmp_sf, cs.stateFile) < 0) {
+ 		LogError(errno, iRet, "imjournal: rename() failed for new path: '%s'", cs.stateFile);
+@@ -586,6 +588,7 @@ persistJournalState(void)
+ 			LogError(errno, RS_RET_IO_ERROR, "imjournal: fsync on '%s' failed", glbl.GetWorkDir());
+ 			ABORT_FINALIZE(RS_RET_IO_ERROR);
+ 		}
++		closedir(wd);
+ 	}
+ 
+ 	DBGPRINTF("Persisted journal to '%s'\n", cs.stateFile);
diff --git a/SOURCES/rsyslog-8.2102.0-rhbz1984489-remove-abort-on-id-resolution-fail.patch b/SOURCES/rsyslog-8.2102.0-rhbz1984489-remove-abort-on-id-resolution-fail.patch
new file mode 100644
index 0000000..344eef6
--- /dev/null
+++ b/SOURCES/rsyslog-8.2102.0-rhbz1984489-remove-abort-on-id-resolution-fail.patch
@@ -0,0 +1,102 @@
+diff -up rsyslog-8.2102.0/runtime/cfsysline.c.orig rsyslog-8.2102.0/runtime/cfsysline.c
+--- rsyslog-8.2102.0/runtime/cfsysline.c.orig	2021-08-04 07:16:02.663163106 +0200
++++ rsyslog-8.2102.0/runtime/cfsysline.c	2021-08-04 07:18:05.952490008 +0200
+@@ -353,13 +353,8 @@ static rsRetVal doGetGID(uchar **pp, rsR
+ 	assert(*pp != NULL);
+ 
+ 	if(getSubString(pp, (char*) szName, sizeof(szName), ' ')  != 0) {
+-		if(loadConf->globals.abortOnIDResolutionFail) {
+-			fprintf(stderr, "could not extract group name: %s\n", (char*)szName);
+-			exit(1); /* good exit */
+-		} else {
+-			LogError(0, RS_RET_NOT_FOUND, "could not extract group name");
+-			ABORT_FINALIZE(RS_RET_NOT_FOUND);
+-		}
++		LogError(0, RS_RET_NOT_FOUND, "could not extract group name");
++		ABORT_FINALIZE(RS_RET_NOT_FOUND);
+ 	}
+ 
+ 	do {
+@@ -380,10 +375,6 @@ static rsRetVal doGetGID(uchar **pp, rsR
+ 			LogError(0, RS_RET_NOT_FOUND, "ID for group '%s' could not be found", szName);
+ 		}
+ 		iRet = RS_RET_NOT_FOUND;
+-		if(loadConf->globals.abortOnIDResolutionFail) {
+-			fprintf(stderr, "ID for group '%s' could not be found or error\n", szName);
+-			exit(1); /* good exit */
+-		}
+ 	} else {
+ 		if(pSetHdlr == NULL) {
+ 			/* we should set value directly to var */
+@@ -418,25 +409,15 @@ static rsRetVal doGetUID(uchar **pp, rsR
+ 	assert(*pp != NULL);
+ 
+ 	if(getSubString(pp, (char*) szName, sizeof(szName), ' ')  != 0) {
+-		if(loadConf->globals.abortOnIDResolutionFail) {
+-			fprintf(stderr, "could not extract user name: %s\n", (char*)szName);
+-			exit(1); /* good exit */
+-		} else {
+-			LogError(0, RS_RET_NOT_FOUND, "could not extract user name");
+-			ABORT_FINALIZE(RS_RET_NOT_FOUND);
+-		}
++		LogError(0, RS_RET_NOT_FOUND, "could not extract user name");
++		ABORT_FINALIZE(RS_RET_NOT_FOUND);
+ 	}
+ 
+ 	getpwnam_r((char*)szName, &pwBuf, stringBuf, sizeof(stringBuf), &ppwBuf);
+ 
+ 	if(ppwBuf == NULL) {
+-		if(loadConf->globals.abortOnIDResolutionFail) {
+-			fprintf(stderr, "ID for user '%s' could not be found or error\n", (char*)szName);
+-			exit(1); /* good exit */
+-		} else {
+-			LogError(0, RS_RET_NOT_FOUND, "ID for user '%s' could not be found or error", (char*)szName);
+-			iRet = RS_RET_NOT_FOUND;
+-		}
++		LogError(0, RS_RET_NOT_FOUND, "ID for user '%s' could not be found or error", (char*)szName);
++		iRet = RS_RET_NOT_FOUND;
+ 	} else {
+ 		if(pSetHdlr == NULL) {
+ 			/* we should set value directly to var */
+diff -up rsyslog-8.2102.0/runtime/glbl.c.orig rsyslog-8.2102.0/runtime/glbl.c
+--- rsyslog-8.2102.0/runtime/glbl.c.orig	2021-08-04 07:18:19.301633677 +0200
++++ rsyslog-8.2102.0/runtime/glbl.c	2021-08-04 07:19:02.409019106 +0200
+@@ -210,7 +210,6 @@ static struct cnfparamdescr cnfparamdesc
+ 	{ "environment", eCmdHdlrArray, 0 },
+ 	{ "processinternalmessages", eCmdHdlrBinary, 0 },
+ 	{ "umask", eCmdHdlrFileCreateMode, 0 },
+-	{ "security.abortonidresolutionfail", eCmdHdlrBinary, 0 },
+ 	{ "internal.developeronly.options", eCmdHdlrInt, 0 },
+ 	{ "internalmsg.ratelimit.interval", eCmdHdlrPositiveInt, 0 },
+ 	{ "internalmsg.ratelimit.burst", eCmdHdlrPositiveInt, 0 },
+@@ -1443,8 +1442,6 @@ glblDoneLoadCnf(void)
+ 			glblInputTimeoutShutdown = (int) cnfparamvals[i].val.d.n;
+ 		} else if(!strcmp(paramblk.descr[i].name, "privdrop.group.keepsupplemental")) {
+ 			loadConf->globals.gidDropPrivKeepSupplemental = (int) cnfparamvals[i].val.d.n;
+-		} else if(!strcmp(paramblk.descr[i].name, "security.abortonidresolutionfail")) {
+-			loadConf->globals.abortOnIDResolutionFail = (int) cnfparamvals[i].val.d.n;
+ 		} else if(!strcmp(paramblk.descr[i].name, "net.acladdhostnameonfail")) {
+ 			*(net.pACLAddHostnameOnFail) = (int) cnfparamvals[i].val.d.n;
+ 		} else if(!strcmp(paramblk.descr[i].name, "net.aclresolvehostname")) {
+diff -up rsyslog-8.2102.0/runtime/rsconf.c.orig rsyslog-8.2102.0/runtime/rsconf.c
+--- rsyslog-8.2102.0/runtime/rsconf.c.orig	2021-08-04 07:19:13.103104854 +0200
++++ rsyslog-8.2102.0/runtime/rsconf.c	2021-08-04 07:19:44.635357684 +0200
+@@ -156,7 +156,6 @@ static void cnfSetDefaults(rsconf_t *pTh
+ 	pThis->globals.maxErrMsgToStderr = -1;
+ 	pThis->globals.umask = -1;
+ 	pThis->globals.gidDropPrivKeepSupplemental = 0;
+-	pThis->globals.abortOnIDResolutionFail = 1;
+ 	pThis->templates.root = NULL;
+ 	pThis->templates.last = NULL;
+ 	pThis->templates.lastStatic = NULL;
+diff -up rsyslog-8.2102.0/runtime/rsconf.h.orig rsyslog-8.2102.0/runtime/rsconf.h
+--- rsyslog-8.2102.0/runtime/rsconf.h.orig	2021-08-04 07:20:15.848607958 +0200
++++ rsyslog-8.2102.0/runtime/rsconf.h	2021-08-04 07:20:42.782823920 +0200
+@@ -73,7 +73,6 @@ struct globals_s {
+ 	int uidDropPriv;	/* user-id to which priveleges should be dropped to */
+ 	int gidDropPriv;	/* group-id to which priveleges should be dropped to */
+ 	int gidDropPrivKeepSupplemental; /* keep supplemental groups when dropping? */
+-	int abortOnIDResolutionFail;
+ 	int umask;		/* umask to use */
+ 	uchar *pszConfDAGFile;	/* name of config DAG file, non-NULL means generate one */
+ 
diff --git a/SOURCES/rsyslog-8.2102.0-rhbz1984616-imuxsock-ratelimit.patch b/SOURCES/rsyslog-8.2102.0-rhbz1984616-imuxsock-ratelimit.patch
new file mode 100644
index 0000000..710f48c
--- /dev/null
+++ b/SOURCES/rsyslog-8.2102.0-rhbz1984616-imuxsock-ratelimit.patch
@@ -0,0 +1,26 @@
+diff -up rsyslog-8.2102.0/runtime/ratelimit.c.orig rsyslog-8.2102.0/runtime/ratelimit.c
+--- rsyslog-8.2102.0/runtime/ratelimit.c.orig	2021-07-27 10:37:50.972903104 +0200
++++ rsyslog-8.2102.0/runtime/ratelimit.c	2021-07-27 10:38:26.141002988 +0200
+@@ -235,7 +235,6 @@ ratelimitMsg(ratelimit_t *__restrict__ c
+ {
+ 	DEFiRet;
+ 	rsRetVal localRet;
+-	int severity = 0;
+ 
+ 	*ppRepMsg = NULL;
+ 
+@@ -246,13 +245,12 @@ ratelimitMsg(ratelimit_t *__restrict__ c
+ 				DBGPRINTF("Message discarded, parsing error %d\n", localRet);
+ 				ABORT_FINALIZE(RS_RET_DISCARDMSG);
+ 			}
+-			severity = pMsg->iSeverity;
+ 		}
+ 	}
+ 
+ 	/* Only the messages having severity level at or below the
+ 	 * treshold (the value is >=) are subject to ratelimiting. */
+-	if(ratelimit->interval && (severity >= ratelimit->severity)) {
++	if(ratelimit->interval && (pMsg->iSeverity >= ratelimit->severity)) {
+ 		char namebuf[512]; /* 256 for FGDN adn 256 for APPNAME should be enough */
+ 		snprintf(namebuf, sizeof namebuf, "%s:%s", getHOSTNAME(pMsg),
+ 			getAPPNAME(pMsg, 0));
diff --git a/SOURCES/rsyslog.service b/SOURCES/rsyslog.service
new file mode 100644
index 0000000..3b073f6
--- /dev/null
+++ b/SOURCES/rsyslog.service
@@ -0,0 +1,23 @@
+[Unit]
+Description=System Logging Service
+;Requires=syslog.socket
+Wants=network.target network-online.target
+After=network.target network-online.target
+Documentation=man:rsyslogd(8)
+Documentation=https://www.rsyslog.com/doc/
+
+[Service]
+Type=notify
+EnvironmentFile=-/etc/sysconfig/rsyslog
+ExecStart=/usr/sbin/rsyslogd -n $SYSLOGD_OPTIONS
+UMask=0066
+StandardOutput=null
+Restart=on-failure
+
+# Increase the default a bit in order to allow many simultaneous
+# files to be monitored, we might need a lot of fds.
+LimitNOFILE=16384
+
+[Install]
+WantedBy=multi-user.target
+;Alias=syslog.service
diff --git a/SPECS/rsyslog.spec b/SPECS/rsyslog.spec
index aec3d13..38af939 100644
--- a/SPECS/rsyslog.spec
+++ b/SPECS/rsyslog.spec
@@ -5,8 +5,8 @@
 
 Summary: Enhanced system logging and kernel message trapping daemon
 Name: rsyslog
-Version: 8.1911.0
-Release: 7%{?dist}
+Version: 8.2102.0
+Release: 5%{?dist}
 License: (GPLv3+ and ASL 2.0)
 Group: System Environment/Daemons
 ExcludeArch: i686
@@ -16,7 +16,8 @@ Source1: http://www.rsyslog.com/files/download/rsyslog/%{name}-doc-%{version}.ta
 Source2: rsyslog.conf
 Source3: rsyslog.sysconfig
 Source4: rsyslog.log
-Source5: qpid-proton-0.31.0.tar.gz
+Source5: qpid-proton-0.34.0.tar.gz
+Source6: rsyslog.service
 
 BuildRequires: autoconf
 BuildRequires: automake
@@ -33,7 +34,9 @@ BuildRequires: python3-docutils
 # it depens on rhbz#1419228
 BuildRequires: systemd-devel >= 219-39
 BuildRequires: zlib-devel
+BuildRequires: openssl-devel
 
+Requires: openssl-libs
 Requires: logrotate >= 3.5.2
 Requires: bash >= 2.0
 Requires: libestr >= 0.1.9
@@ -44,16 +47,13 @@ Requires(postun): systemd
 Provides: syslog
 Obsoletes: sysklogd < 1.5-11
 
-# tweak the upstream service file to honour configuration from /etc/sysconfig/rsyslog
-Patch0: rsyslog-8.1911.0-service.patch
 # imjournal: adds "journal" when tag/process name is missing
-Patch1: rsyslog-8.1911.0-rhbz1659898-imjournal-default-tag.patch
-Patch2: rsyslog-8.1911.0-rhbz1763757-imfile-statefiles.patch
-Patch3: rsyslog-8.1911.0-rhbz1782353-deny-expired-by-default.patch
-Patch4: rsyslog-8.1911.0-rhbz1659383-config-enabled-error.patch
-Patch5: rsyslog-8.1911.0-rhbz1789675-serialize-crash-race.patch
-Patch6: rsyslog-8.1911.0-rhbz1793569-imfile-file_id.patch
-Patch7: rsyslog-8.1911.0-rhbz1843994-imfile-selinux-symlink-crash.patch
+Patch0: rsyslog-8.1911.0-rhbz1659898-imjournal-default-tag.patch
+Patch1: rsyslog-8.2102.0-rhbz1960536-fdleak-on-fsync.patch
+Patch2: rsyslog-8.2102.0-rhbz1886400-reduce-default-timeout.patch
+Patch3: rsyslog-8.2102.0-rhbz1866877-unexpected-length.patch
+Patch4: rsyslog-8.2102.0-rhbz1984616-imuxsock-ratelimit.patch
+Patch5: rsyslog-8.2102.0-rhbz1984489-remove-abort-on-id-resolution-fail.patch
 
 %package crypto
 Summary: Encryption support
@@ -72,11 +72,17 @@ Group: System Environment/Daemons
 Requires: %name = %version-%release
 
 %package gnutls
-Summary: TLS protocol support for rsyslog
+Summary: TLS protocol support for rsyslog via GnuTLS library
 Group: System Environment/Daemons
 Requires: %name = %version-%release
 BuildRequires: gnutls-devel
 
+%package openssl
+Summary: TLS protocol support for rsyslog via OpenSSL library
+Group: System Environment/Daemons
+Requires: %name = %version-%release
+BuildRequires: openssl-devel
+
 %package gssapi
 Summary: GSSAPI authentication and encryption support for rsyslog
 Group: System Environment/Daemons
@@ -182,7 +188,14 @@ Elasticsearch.
 %description gnutls
 The rsyslog-gnutls package contains the rsyslog plugins that provide the
 ability to send and receive syslog messages via TCP or RELP using TLS
-encryption. For details refer to rsyslog doc on imtcp and omfwd modules.
+encryption via GnuTLS library. For details refer to rsyslog doc on imtcp
+and omfwd modules.
+
+%description openssl
+The rsyslog-openssl package contains the rsyslog plugins that provide the
+ability to send and receive syslog messages via TCP or RELP using TLS
+encryption via OpenSSL library. For details refer to rsyslog doc on imtcp
+and omfwd modules.
 
 %description gssapi
 The rsyslog-gssapi package contains the rsyslog plugins which support GSSAPI
@@ -255,14 +268,12 @@ mv build doc
 %setup -q -D
 %setup -q -D -T -b 5
 
-%patch0 -p1 -b .service
-%patch1 -p1 -b .default-tag
-%patch2 -p1 -b .imfile-statefiles
-%patch3 -p1 -b .deny-expired-certs
-%patch4 -p1 -b .config-enabled-on
-%patch5 -p1 -b .serialize-json
-%patch6 -p1 -b .imfile-id
-%patch7 -p1 -b .imfile-selinux-symlink
+%patch0 -p1 -b .default-tag
+%patch1 -p1 -b .fd-leak-on-fsync
+%patch2 -p1 -b .timeout
+%patch3 -p1 -b .unexpected-priority-length
+%patch4 -p1 -b .imuxsock-rate-limit
+%patch5 -p1 -b .abort-on-id-resolution-fail
 
 %build
 %ifarch sparc64
@@ -273,7 +284,7 @@ export CFLAGS="$RPM_OPT_FLAGS -fpic"
 %endif
 # build the proton first
 (
-	cd %{_builddir}/qpid-proton-0.31.0
+	cd %{_builddir}/qpid-proton-0.34.0
 	mkdir bld
 	cd bld
 
@@ -306,6 +317,7 @@ autoreconf -if
 	--enable-elasticsearch \
 	--enable-generate-man-pages \
 	--enable-gnutls \
+	--enable-openssl \
 	--enable-gssapi-krb5 \
 	--enable-imdiag \
 	--enable-imfile \
@@ -323,7 +335,7 @@ autoreconf -if
 	--enable-mmsnmptrapd \
 	--enable-mmutf8fix \
 	--enable-mysql \
-	--enable-omamqp1 PROTON_LIBS="%{_builddir}/qpid-proton-0.31.0/bld/c/libqpid-proton-core-static.a %{_builddir}/qpid-proton-0.31.0/bld/c/libqpid-proton-proactor-static.a %{_builddir}/qpid-proton-0.31.0/bld/c/libqpid-proton-static.a -lssl -lsasl2 -lcrypto" PROTON_CFLAGS="-I%{_builddir}/qpid-proton-0.31.0/bld/c/include" \
+	--enable-omamqp1 PROTON_LIBS="%{_builddir}/qpid-proton-0.34.0/bld/c/libqpid-proton-core-static.a %{_builddir}/qpid-proton-0.34.0/bld/c/libqpid-proton-proactor-static.a %{_builddir}/qpid-proton-0.34.0/bld/c/libqpid-proton-static.a -lssl -lsasl2 -lcrypto" PROTON_CFLAGS="-I%{_builddir}/qpid-proton-0.34.0/bld/c/include" \
 	--enable-omhttp \
 	--enable-omjournal \
 	--enable-omkafka \
@@ -348,6 +360,7 @@ make DESTDIR=%{buildroot} install
 
 install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig
 install -d -m 755 %{buildroot}%{_sysconfdir}/logrotate.d
+install -d -m 755 %{buildroot}%{_unitdir}
 install -d -m 755 %{buildroot}%{_sysconfdir}/rsyslog.d
 install -d -m 700 %{buildroot}%{rsyslog_statedir}
 install -d -m 700 %{buildroot}%{rsyslog_pkidir}
@@ -356,6 +369,7 @@ install -d -m 755 %{buildroot}%{rsyslog_docdir}/html
 install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/rsyslog.conf
 install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/sysconfig/rsyslog
 install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/syslog
+install -p -m 644 %{SOURCE6} %{buildroot}%{_unitdir}/rsyslog.service
 install -p -m 644 plugins/ommysql/createDB.sql %{buildroot}%{rsyslog_docdir}/mysql-createDB.sql
 install -p -m 644 plugins/ompgsql/createDB.sql %{buildroot}%{rsyslog_docdir}/pgsql-createDB.sql
 install -p -m 644 contrib/mmkubernetes/*.rulebase %{buildroot}%{rsyslog_docdir}
@@ -363,8 +377,6 @@ install -p -m 644 contrib/mmkubernetes/*.rulebase %{buildroot}%{rsyslog_docdir}
 cp -r doc/* %{buildroot}%{rsyslog_docdir}/html
 # get rid of libtool libraries
 rm -f %{buildroot}%{_libdir}/rsyslog/*.la
-# get rid of socket activation by default
-sed -i '/^Alias/s/^/;/;/^Requires=syslog.socket/s/^/;/' %{buildroot}%{_unitdir}/rsyslog.service
 
 # convert line endings from "\r\n" to "\n"
 cat tools/recover_qi.pl | tr -d '\r' > %{buildroot}%{_bindir}/rsyslog-recover-qi.pl
@@ -455,6 +467,9 @@ done
 %files gnutls
 %{_libdir}/rsyslog/lmnsd_gtls.so
 
+%files openssl
+%{_libdir}/rsyslog/lmnsd_ossl.so
+
 %files kafka
 %{_libdir}/rsyslog/imkafka.so
 %{_libdir}/rsyslog/omkafka.so
@@ -499,6 +514,36 @@ done
 %{_libdir}/rsyslog/omudpspoof.so
 
 %changelog
+* Wed Aug 04 2021 Attila Lakatos <alakatos@redhat.com> - 8.2102.0-5
+- Do not exit when user/group can not be found
+  resolves: rhbz#1984489
+- Remove abortOnIDResolution fail
+
+* Tue Jul 27 2021 Attila Lakatos <alakatos@redhat.com> - 8.2102.0-4
+- Allways use message severity when comparing with ratelimit severity
+  resolves: rhbz#1984616
+
+* Mon Jun 28 2021 Attila Lakatos <alakatos@redhat.com> - 8.2102.0-3
+- Priority field must have valid length
+  resolves: rhbz#1866877
+- Allocate more memory on too large groups
+  resolves: rhbz#1944718
+
+* Tue May 18 2021 Attila Lakatos <alakatos@redhat.com> - 8.2102.0-2
+  RHEL 8.5.0 ERRATUM
+- rebase to 8.2102.0
+  resolves: rhbz#1932795
+- Enable openssl
+  resolves: rhbz#1891458
+- EKU check for client cert on server side
+  resolves: rhbz#1783348
+- Use GNUTLS_SHUT_WR when ending TLS connections
+  resolves: rhbz#1880434
+- Use librelp with openssl enabled
+  resolves: rhbz#1795607
+- Close dir when fsync=on
+  resolves: rhbz#1960536
+
 * Wed Nov 18 2020 Attila Lakatos <alakatos@redhat.com> - 8.1911.0-7
 - add back rsyslog-udpspoof package
   resolves: rhbz#1869874