summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-mail/fdm/files/fdm-2.2-pop3-utf8.patch')
-rw-r--r--net-mail/fdm/files/fdm-2.2-pop3-utf8.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/net-mail/fdm/files/fdm-2.2-pop3-utf8.patch b/net-mail/fdm/files/fdm-2.2-pop3-utf8.patch
new file mode 100644
index 000000000000..71cc08197ad7
--- /dev/null
+++ b/net-mail/fdm/files/fdm-2.2-pop3-utf8.patch
@@ -0,0 +1,50 @@
+https://github.com/nicm/fdm/commit/0918b78a82a789d63cebe44b7662f0a8dc603000
+
+From 0918b78a82a789d63cebe44b7662f0a8dc603000 Mon Sep 17 00:00:00 2001
+From: Nicholas Marriott <nicholas.marriott@gmail.com>
+Date: Mon, 4 Sep 2023 09:03:47 +0100
+Subject: [PATCH] Send UTF8 command to POP3 server (ignore the response),
+ because some servers don't like UTF-8 without it.
+
+---
+ pop3-common.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/pop3-common.c b/pop3-common.c
+index 0724887..e038172 100644
+--- a/pop3-common.c
++++ b/pop3-common.c
+@@ -54,6 +54,7 @@ int pop3_invalid(struct account *, const char *);
+ int pop3_state_connect(struct account *, struct fetch_ctx *);
+ int pop3_state_starttls(struct account *, struct fetch_ctx *);
+ int pop3_state_connected(struct account *, struct fetch_ctx *);
++int pop3_state_utf8(struct account *, struct fetch_ctx *);
+ int pop3_state_user(struct account *, struct fetch_ctx *);
+ int pop3_state_cache1(struct account *, struct fetch_ctx *);
+ int pop3_state_cache2(struct account *, struct fetch_ctx *);
+@@ -436,6 +437,24 @@ pop3_state_connected(struct account *a, struct fetch_ctx *fctx)
+ }
+ }
+
++ if (pop3_putln(a, "UTF8") != 0)
++ return (FETCH_ERROR);
++ fctx->state = pop3_state_utf8;
++ return (FETCH_BLOCK);
++}
++
++/* UTF8 state. */
++int
++pop3_state_utf8(struct account *a, struct fetch_ctx *fctx)
++{
++ struct fetch_pop3_data *data = a->data;
++ char *line;
++
++ if (pop3_getln(a, fctx, &line) != 0)
++ return (FETCH_ERROR);
++ if (line == NULL)
++ return (FETCH_BLOCK);
++
+ if (pop3_putln(a, "USER %s", data->user) != 0)
+ return (FETCH_ERROR);
+ fctx->state = pop3_state_user;
+