]> git.pld-linux.org Git - packages/lftp.git/commitdiff
- fix connections on link-local ipv6 addresses
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 27 Jan 2009 13:51:44 +0000 (13:51 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    lftp-ipv6.patch -> 1.1

lftp-ipv6.patch [new file with mode: 0644]

diff --git a/lftp-ipv6.patch b/lftp-ipv6.patch
new file mode 100644 (file)
index 0000000..ea3e9b3
--- /dev/null
@@ -0,0 +1,70 @@
+diff -ur lftp-3.7.8.org/src/Resolver.cc lftp-3.7.8/src/Resolver.cc
+--- lftp-3.7.8.org/src/Resolver.cc     2008-11-27 06:56:26.000000000 +0100
++++ lftp-3.7.8/src/Resolver.cc 2009-01-27 14:47:57.466736403 +0100
+@@ -291,7 +291,7 @@
+    done=true;
+ }
+-void Resolver::AddAddress(int family,const char *address,int len)
++void Resolver::AddAddress(int family,const char *address,int len, unsigned int scope)
+ {
+    sockaddr_u add;
+    memset(&add,0,sizeof(add));
+@@ -315,6 +315,7 @@
+          return;
+       memcpy(&add.in6.sin6_addr,address,len);
+       add.in6.sin6_port=port_number;
++      add.in6.sin6_scope_id=scope;
+ #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
+       add.sa.sa_len=sizeof(add.in6);
+ #endif
+@@ -693,6 +694,7 @@
+       struct sockaddr_in6   *inet6_addr;
+       const char          *addr_data;
+       int                 addr_len;
++      unsigned int          addr_scope;
+       memset(&a_hint, 0, sizeof(a_hint));
+       a_hint.ai_flags     = AI_PASSIVE;
+@@ -717,17 +719,19 @@
+              case AF_INET:
+                 inet_addr   = (sockaddr_in *)sockname;
+                 addr_data   = (const char *)&(inet_addr->sin_addr.s_addr);
++                addr_scope  = 0;
+                 addr_len    = sizeof(inet_addr->sin_addr.s_addr);
+                 break;
+              case AF_INET6:
+                 inet6_addr  = (sockaddr_in6 *)sockname;
+                 addr_data   = (const char *)&(inet6_addr->sin6_addr.s6_addr);
++                addr_scope  = inet6_addr->sin6_scope_id;
+                 addr_len    = sizeof(inet6_addr->sin6_addr.s6_addr);
+                 break;
+              default:
+                 continue;
+              }
+-             AddAddress(a_res->ai_family, addr_data, addr_len);
++             AddAddress(a_res->ai_family, addr_data, addr_len, addr_scope);
+           }
+        }
+@@ -773,7 +777,7 @@
+       {
+        const char * const *a;
+        for(a=ha->h_addr_list; *a; a++)
+-          AddAddress(ha->h_addrtype, *a, ha->h_length);
++          AddAddress(ha->h_addrtype, *a, ha->h_length, 0);
+        retries=0;
+        af_index++;
+ # if defined(HAVE_GETIPNODEBYNAME)
+diff -ur lftp-3.7.8.org/src/Resolver.h lftp-3.7.8/src/Resolver.h
+--- lftp-3.7.8.org/src/Resolver.h      2008-11-27 06:56:27.000000000 +0100
++++ lftp-3.7.8/src/Resolver.h  2009-01-27 14:47:12.017783307 +0100
+@@ -47,7 +47,7 @@
+    xarray<sockaddr_u> addr;
+-   void AddAddress(int family,const char *a,int len);
++   void AddAddress(int family,const char *a,int len,unsigned int scope);
+    xstring err_msg;
+    bool done;
This page took 0.035022 seconds and 4 git commands to generate.