}
}
-static void wire_text_to_str(rrset_dump_params_t *p, bool quote, unsigned with_header_len)
+static void wire_text_to_str(rrset_dump_params_t *p, bool quote,
+ unsigned with_header_len, bool alpn_mode)
{
CHECK_PRET
dump_string(p, "\\");
CHECK_PRET
}
+ if (alpn_mode && (ch == ',' || ch == '\\')) {
+ dump_string(p, "\\\\");
+ CHECK_PRET
+ }
// Print text character.
if (p->out_max == 0) {
static void wire_text_to_str1(rrset_dump_params_t *p)
{
- wire_text_to_str(p, false, 1);
+ wire_text_to_str(p, false, 1, true);
}
static void wire_ech_to_base64(rrset_dump_params_t *p, unsigned ech_len)
default:
p->in -= sizeof(val_len); // Rollback to where the string length resides.
p->in_max += sizeof(val_len);
- wire_text_to_str(p, true, sizeof(val_len));
+ wire_text_to_str(p, true, sizeof(val_len), false);
}
}
}
2, true, ""); CHECK_RET(p);
#define DUMP_OMIT wire_data_omit(p); CHECK_RET(p);
#define DUMP_KEY_OMIT wire_dnskey_to_tag(p); CHECK_RET(p);
-#define DUMP_TEXT wire_text_to_str(p, true, 1); CHECK_RET(p);
-#define DUMP_LONG_TEXT wire_text_to_str(p, true, false); CHECK_RET(p);
-#define DUMP_UNQUOTED wire_text_to_str(p, false, 1); CHECK_RET(p);
+#define DUMP_TEXT wire_text_to_str(p, true, 1, false); CHECK_RET(p);
+#define DUMP_LONG_TEXT wire_text_to_str(p, true, 0, false); CHECK_RET(p);
+#define DUMP_UNQUOTED wire_text_to_str(p, false, 1, false); CHECK_RET(p);
#define DUMP_BITMAP wire_bitmap_to_str(p); CHECK_RET(p);
#define DUMP_APL wire_apl_to_str(p); CHECK_RET(p);
#define DUMP_LOC wire_loc_to_str(p); CHECK_RET(p);