1 diff -ur lftp-3.7.8.org/src/Resolver.cc lftp-3.7.8/src/Resolver.cc
2 --- lftp-3.7.8.org/src/Resolver.cc 2008-11-27 06:56:26.000000000 +0100
3 +++ lftp-3.7.8/src/Resolver.cc 2009-01-27 14:47:57.466736403 +0100
8 -void Resolver::AddAddress(int family,const char *address,int len)
9 +void Resolver::AddAddress(int family,const char *address,int len, unsigned int scope)
12 memset(&add,0,sizeof(add));
15 memcpy(&add.in6.sin6_addr,address,len);
16 add.in6.sin6_port=port_number;
17 + add.in6.sin6_scope_id=scope;
18 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
19 add.sa.sa_len=sizeof(add.in6);
22 struct sockaddr_in6 *inet6_addr;
23 const char *addr_data;
25 + unsigned int addr_scope;
27 memset(&a_hint, 0, sizeof(a_hint));
28 a_hint.ai_flags = AI_PASSIVE;
31 inet_addr = (sockaddr_in *)sockname;
32 addr_data = (const char *)&(inet_addr->sin_addr.s_addr);
34 addr_len = sizeof(inet_addr->sin_addr.s_addr);
37 inet6_addr = (sockaddr_in6 *)sockname;
38 addr_data = (const char *)&(inet6_addr->sin6_addr.s6_addr);
39 + addr_scope = inet6_addr->sin6_scope_id;
40 addr_len = sizeof(inet6_addr->sin6_addr.s6_addr);
45 - AddAddress(a_res->ai_family, addr_data, addr_len);
46 + AddAddress(a_res->ai_family, addr_data, addr_len, addr_scope);
52 const char * const *a;
53 for(a=ha->h_addr_list; *a; a++)
54 - AddAddress(ha->h_addrtype, *a, ha->h_length);
55 + AddAddress(ha->h_addrtype, *a, ha->h_length, 0);
58 # if defined(HAVE_GETIPNODEBYNAME)
59 diff -ur lftp-3.7.8.org/src/Resolver.h lftp-3.7.8/src/Resolver.h
60 --- lftp-3.7.8.org/src/Resolver.h 2008-11-27 06:56:27.000000000 +0100
61 +++ lftp-3.7.8/src/Resolver.h 2009-01-27 14:47:12.017783307 +0100
64 xarray<sockaddr_u> addr;
66 - void AddAddress(int family,const char *a,int len);
67 + void AddAddress(int family,const char *a,int len,unsigned int scope);