From f3d09eddea1bc2f7a56db339a75cb66e61502c88 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 25 Sep 2019 18:33:48 +0100 Subject: [PATCH] [Minor] Fix protocol encoding --- src/libserver/url.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/libserver/url.c b/src/libserver/url.c index d770b2191..ec43404f9 100644 --- a/src/libserver/url.c +++ b/src/libserver/url.c @@ -3487,16 +3487,23 @@ rspamd_url_encode (struct rspamd_url *url, gsize *pdlen, } /* Need to encode */ - dlen += url->urllen; + dlen += url->urllen + sizeof ("telephone://"); /* Protocol hack */ dest = rspamd_mempool_alloc (pool, dlen + 1); d = dest; dend = d + dlen; if (url->protocollen > 0) { - const gchar *known_proto = rspamd_url_protocol_name (url->protocol); - d += rspamd_snprintf ((gchar *) d, dend - d, - "%s://", - known_proto); + if (!(url->protocol & PROTOCOL_UNKNOWN)) { + const gchar *known_proto = rspamd_url_protocol_name (url->protocol); + d += rspamd_snprintf ((gchar *) d, dend - d, + "%s://", + known_proto); + } + else { + d += rspamd_snprintf ((gchar *) d, dend - d, + "%*s://", + (gint)url->protocollen, url->string); + } } else { d += rspamd_snprintf ((gchar *) d, dend - d, "http://"); -- 2.39.5