diff --git a/src/knot/zone/zone-dump.c b/src/knot/zone/zone-dump.c
index 2d37af34a830a8c8789c4da5dee59639ab04bfda..15e3b44512d53a75fb986b3e300dbf070c197e7d 100644
--- a/src/knot/zone/zone-dump.c
+++ b/src/knot/zone/zone-dump.c
@@ -52,7 +52,6 @@ static int apex_node_dump_text(knot_node_t *node, dump_params_t *params)
 			soa_style.show_class = true;
 		}
 		if (knot_rrset_txt_dump(soa, params->buf, params->buflen,
-					params->dump_rdata, params->dump_rrsig,
 					&soa_style) < 0) {
 			return KNOT_ENOMEM;
 		}
@@ -73,17 +72,22 @@ static int apex_node_dump_text(knot_node_t *node, dump_params_t *params)
 				break;
 			}
 			continue;
+		case KNOT_RRTYPE_RRSIG:
+			if (params->dump_rrsig) {
+				break;
+			}
+			continue;
 		case KNOT_RRTYPE_SOA:
 			continue;
 		default:
-			if (params->dump_nsec) {
+			if (params->dump_nsec ||
+			    (params->dump_rrsig && !params->dump_rdata)) {
 				continue;
 			}
 			break;
 		}
 
 		if (knot_rrset_txt_dump(rrsets[i], params->buf, params->buflen,
-		                        params->dump_rdata, params->dump_rrsig,
 		                        params->style) < 0) {
 			return KNOT_ENOMEM;
 		}
@@ -112,20 +116,25 @@ static int node_dump_text(knot_node_t *node, void *data)
 	// Dump non-apex rrsets.
 	for (uint16_t i = 0; i < node->rrset_count; i++) {
 		switch (rrsets[i]->type) {
+		case KNOT_RRTYPE_RRSIG:
+			if (params->dump_rrsig) {
+				break;
+			}
+			continue;
 		case KNOT_RRTYPE_NSEC:
 			if (params->dump_nsec) {
 				break;
 			}
 			continue;
 		default:
-			if (params->dump_nsec) {
+			if (params->dump_nsec ||
+			    (params->dump_rrsig && !params->dump_rdata)) {
 				continue;
 			}
 			break;
 		}
 
 		if (knot_rrset_txt_dump(rrsets[i], params->buf, params->buflen,
-		                        params->dump_rdata, params->dump_rrsig,
 		                        params->style) < 0) {
 			return KNOT_ENOMEM;
 		}
@@ -175,12 +184,8 @@ int zone_dump_text(knot_zone_contents_t *zone, FILE *file)
 	}
 
 	// Dump DNSSEC signatures if secured.
-	const knot_rrset_t *soa = knot_node_rrset(knot_zone_contents_apex(zone),
-	                                          KNOT_RRTYPE_SOA);
 	if (knot_zone_contents_is_signed(zone)) {
 		fprintf(file, ";; DNSSEC signatures\n");
-		/* TODO: will not dump RRSIGs after, will handle as any other RR. */
-
 		// Dump rrsig records.
 		params.dump_rdata = false;
 		params.dump_rrsig = true;
diff --git a/src/libknot/rrset-dump.c b/src/libknot/rrset-dump.c
index c3e5511643d9ca095fb3446b3614439214297ddd..0a32f0330f82517711cd8e0d831e8e2a88bcf6d8 100644
--- a/src/libknot/rrset-dump.c
+++ b/src/libknot/rrset-dump.c
@@ -1977,8 +1977,6 @@ int knot_rrset_txt_dump_header(const knot_rrset_t      *rrset,
 int knot_rrset_txt_dump(const knot_rrset_t      *rrset,
                         char                    *dst,
                         const size_t            maxlen,
-                        const bool              dump_rdata,
-                        const bool              dump_rrsig,
                         const knot_dump_style_t *style)
 {
 	if (rrset == NULL || dst == NULL || style == NULL) {
@@ -1988,50 +1986,48 @@ int knot_rrset_txt_dump(const knot_rrset_t      *rrset,
 	size_t len = 0;
 	int    ret;
 
-	if (dump_rdata) {
-		// APL RR or UPDATE delete may have empty RDATA => dump header.
-		if (rrset->rdata_count == 0) {
-			// Dump rdata owner, class, ttl and type.
-			ret = knot_rrset_txt_dump_header(rrset, dst + len,
-			                                 maxlen - len, style);
-			if (ret < 0) {
-				return KNOT_ESPACE;
-			}
-			len += ret;
+	// APL RR or UPDATE delete may have empty RDATA => dump header.
+	if (rrset->rdata_count == 0) {
+		// Dump rdata owner, class, ttl and type.
+		ret = knot_rrset_txt_dump_header(rrset, dst + len,
+		                                 maxlen - len, style);
+		if (ret < 0) {
+			return KNOT_ESPACE;
+		}
+		len += ret;
 
-			// Terminate line.
-			if (len >= maxlen) {
-				return KNOT_ESPACE;
-			}
-			dst[len++] = '\n';
-			dst[len] = '\0';
+		// Terminate line.
+		if (len >= maxlen) {
+			return KNOT_ESPACE;
 		}
+		dst[len++] = '\n';
+		dst[len] = '\0';
+	}
 
-		// Loop over rdata in rrset.
-		for (size_t i = 0; i < rrset->rdata_count; i++) {
-			// Dump rdata owner, class, ttl and type.
-			ret = knot_rrset_txt_dump_header(rrset, dst + len,
-			                                 maxlen - len, style);
-			if (ret < 0) {
-				return KNOT_ESPACE;
-			}
-			len += ret;
+	// Loop over rdata in rrset.
+	for (size_t i = 0; i < rrset->rdata_count; i++) {
+		// Dump rdata owner, class, ttl and type.
+		ret = knot_rrset_txt_dump_header(rrset, dst + len,
+		                                 maxlen - len, style);
+		if (ret < 0) {
+			return KNOT_ESPACE;
+		}
+		len += ret;
 
-			// Dump rdata as such.
-			ret = knot_rrset_txt_dump_data(rrset, i, dst + len,
-			                               maxlen - len, style);
-			if (ret < 0) {
-				return KNOT_ESPACE;
-			}
-			len += ret;
+		// Dump rdata as such.
+		ret = knot_rrset_txt_dump_data(rrset, i, dst + len,
+		                               maxlen - len, style);
+		if (ret < 0) {
+			return KNOT_ESPACE;
+		}
+		len += ret;
 
-			// Terminate line.
-			if (len >= maxlen) {
-				return KNOT_ESPACE;
-			}
-			dst[len++] = '\n';
-			dst[len] = '\0';
+		// Terminate line.
+		if (len >= maxlen) {
+			return KNOT_ESPACE;
 		}
+		dst[len++] = '\n';
+		dst[len] = '\0';
 	}
 
 	return len;
diff --git a/src/libknot/rrset-dump.h b/src/libknot/rrset-dump.h
index 799ee91ce455052863e9fb7f1a507222ef2b6e67..74b01749e92fa8036df88be1c2d094baa6285ece 100644
--- a/src/libknot/rrset-dump.h
+++ b/src/libknot/rrset-dump.h
@@ -92,8 +92,6 @@ int knot_rrset_txt_dump_data(const knot_rrset_t      *rrset,
  * \param rrset		RRset to dump.
  * \param dst		Output buffer.
  * \param maxlen	Otuput buffer size.
- * \param dump_rdata	Dump rrset records.
- * \param dump_rrsig	Dump rrset rrsig record.
  * \param style		Output style.
  *
  * \retval output length	if success.
@@ -102,8 +100,6 @@ int knot_rrset_txt_dump_data(const knot_rrset_t      *rrset,
 int knot_rrset_txt_dump(const knot_rrset_t      *rrset,
                         char                    *dst,
                         const size_t            maxlen,
-                        const bool              dump_rdata,
-                        const bool              dump_rrsig,
                         const knot_dump_style_t *style);
 
 #endif // _KNOT_RRSETDUMP_H_
diff --git a/src/utils/common/exec.c b/src/utils/common/exec.c
index 2ee3357161d46a952f945e41cc793ef267174184..9265509dc0acaf48f92eb6739dc0f9dfc228fedb 100644
--- a/src/utils/common/exec.c
+++ b/src/utils/common/exec.c
@@ -229,7 +229,7 @@ static void print_section_full(const knot_rrset_t **rrsets,
 		}
 
 		while (knot_rrset_txt_dump(rrsets[i], buf, buflen,
-		                           true, true, &(style->style)) < 0) {
+		                           &(style->style)) < 0) {
 			buflen += 4096;
 			// Oversize protection.
 			if (buflen > 1000000) {