]> git.pld-linux.org Git - packages/unbound.git/commitdiff
missing patch added auto/th/unbound-1.5.1-2
authorJacek Konieczny <j.konieczny@eggsoft.pl>
Thu, 18 Dec 2014 09:59:40 +0000 (10:59 +0100)
committerJacek Konieczny <j.konieczny@eggsoft.pl>
Thu, 18 Dec 2014 09:59:40 +0000 (10:59 +0100)
unbound-IP_PMTUDISC_OMIT.patch [new file with mode: 0644]

diff --git a/unbound-IP_PMTUDISC_OMIT.patch b/unbound-IP_PMTUDISC_OMIT.patch
new file mode 100644 (file)
index 0000000..dfe71db
--- /dev/null
@@ -0,0 +1,33 @@
+diff -dur unbound-1.5.1.orig/services/listen_dnsport.c unbound-1.5.1/services/listen_dnsport.c
+--- unbound-1.5.1.orig/services/listen_dnsport.c       2014-09-16 15:49:21.000000000 +0200
++++ unbound-1.5.1/services/listen_dnsport.c    2014-12-18 10:37:55.000000000 +0100
+@@ -368,19 +368,20 @@
+  * (and also uses the interface mtu to determine the size of the packets).
+  * So there won't be any EMSGSIZE error.  Against DNS fragmentation attacks.
+  * FreeBSD already has same semantics without setting the option. */
++                int action, result = -1;
+ #    if defined(IP_PMTUDISC_OMIT)
+-              int action = IP_PMTUDISC_OMIT;
+-#    else
+-              int action = IP_PMTUDISC_DONT;
++              action = IP_PMTUDISC_OMIT;
++              result = setsockopt(s, IPPROTO_IP, IP_MTU_DISCOVER,
++                                      &action, (socklen_t)sizeof(action));
+ #    endif
+-              if (setsockopt(s, IPPROTO_IP, IP_MTU_DISCOVER, 
+-                      &action, (socklen_t)sizeof(action)) < 0) {
++              if (result < 0) {
++                      action = IP_PMTUDISC_DONT;
++                      result = setsockopt(s, IPPROTO_IP, IP_MTU_DISCOVER,
++                                      &action, (socklen_t)sizeof(action));
++              }
++              if (result < 0) {
+                       log_err("setsockopt(..., IP_MTU_DISCOVER, "
+-#    if defined(IP_PMTUDISC_OMIT)
+-                              "IP_PMTUDISC_OMIT"
+-#    else
+                               "IP_PMTUDISC_DONT"
+-#    endif
+                               "...) failed: %s",
+                               strerror(errno));
+ #    ifndef USE_WINSOCK
This page took 0.174915 seconds and 4 git commands to generate.