summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/dkimproxy-add-ipv6-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/dkimproxy-add-ipv6-support.patch')
-rw-r--r--gnu/packages/patches/dkimproxy-add-ipv6-support.patch75
1 files changed, 75 insertions, 0 deletions
diff --git a/gnu/packages/patches/dkimproxy-add-ipv6-support.patch b/gnu/packages/patches/dkimproxy-add-ipv6-support.patch
new file mode 100644
index 0000000000..8e9988791d
--- /dev/null
+++ b/gnu/packages/patches/dkimproxy-add-ipv6-support.patch
@@ -0,0 +1,75 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Fri, 01 Mar 2019 20:51:32 +0100
+Subject: [PATCH] dkimproxy: Add IPv6 support.
+
+The following patch was copied verbatim from Debian[0].
+
+[0]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=656041
+
+---
+--- dkimproxy-1.4.1.orig/lib/MSDW/SMTP/Server.pm
++++ dkimproxy-1.4.1/lib/MSDW/SMTP/Server.pm
+@@ -11,7 +11,7 @@
+ # Written by Bennett Todd <bet@rahul.net>
+
+ package MSDW::SMTP::Server;
+-use IO::Socket;
++use IO::Socket::INET6;
+ use IO::File;
+
+ =head1 NAME
+@@ -88,14 +88,14 @@
+ =item new(interface => $interface, port => $port);
+
+ The interface and port to listen on must be specified. The interface
+-must be a valid numeric IP address (0.0.0.0 to listen on all
+-interfaces, as usual); the port must be numeric. If this call
+-succeeds, it returns a server structure with an open
+-IO::Socket::INET in it, ready to listen on. If it fails it dies, so
+-if you want anything other than an exit with an explanatory error
+-message, wrap the constructor call in an eval block and pull the
+-error out of $@ as usual. This is also the case for all other
+-methods; they succeed or they die.
++must be a valid numeric IPv4 or IPv6 address (0.0.0.0 or :: to listen
++on all interfaces, as usual); the port must be numeric. If this call
++succeeds, it returns a server structure with an open IO::Socket::INET6
++in it, ready to listen on. If it fails it dies, so if you want
++anything other than an exit with an explanatory error message, wrap
++the constructor call in an eval block and pull the error out of $@ as
++usual. This is also the case for all other methods; they succeed or
++they die.
+
+ =item accept([debug => FD]);
+
+@@ -154,7 +154,7 @@
+ my ($this, @opts) = @_;
+ my $class = ref($this) || $this;
+ my $self = bless { @opts }, $class;
+- $self->{sock} = IO::Socket::INET->new(
++ $self->{sock} = IO::Socket::INET6->new(
+ LocalAddr => $self->{interface},
+ LocalPort => $self->{port},
+ Proto => 'tcp',
+only in patch2:
+unchanged:
+--- dkimproxy-1.4.1.orig/scripts/dkimproxy.out
++++ dkimproxy-1.4.1/scripts/dkimproxy.out
+@@ -314,17 +314,11 @@
+ {
+ my $self = shift;
+
+- # try to determine peer's address
+- use Socket;
+- my $peersockaddr = getpeername(STDOUT);
+- my ($port, $iaddr) = sockaddr_in($peersockaddr);
+- $ENV{REMOTE_ADDR} = inet_ntoa($iaddr);
+-
+ # initialize syslog
+ eval
+ {
+ openlog("dkimproxy.out", "perror,pid,ndelay", "mail");
+- syslog("debug", '%s', "connect from $ENV{REMOTE_ADDR}");
++ syslog("debug", '%s', "connect from $self->{server}->{peeraddr}");
+ };
+ if (my $E = $@)
+ {