This patch should implement IPv6 functionality.

diff -uNrBbd ftplib-3.1-1.org/CHANGES ftplib-3.1-1.new/CHANGES
--- ftplib-3.1-1.org/CHANGES    2000-09-16 18:22:16.000000000 +0200
+++ ftplib-3.1-1.new/CHANGES    2009-07-23 15:45:08.000000000 +0200
@@ -1,3 +1,5 @@
+2009/7/23, IPv6 support by [email protected]
+
 The obligatory revision history...
 
 Changes from V3.1 to V3.1-1
diff -uNrBbd ftplib-3.1-1.org/linux/ftplib.c ftplib-3.1-1.new/linux/ftplib.c
--- ftplib-3.1-1.org/linux/ftplib.c     2001-02-02 17:29:45.000000000 +0100
+++ ftplib-3.1-1.new/linux/ftplib.c     2009-07-23 15:30:26.000000000 +0200
@@ -384,7 +384,7 @@
 GLOBALDEF int FtpConnect(const char *host, netbuf **nControl)
 {
     int sControl;
-    struct sockaddr_in sin;
+    struct sockaddr_in6 sin;
     struct hostent *phe;
     struct servent *pse;
     int on=1;
@@ -393,9 +393,9 @@
     char *pnum;
 
     memset(&sin,0,sizeof(sin));
-    sin.sin_family = AF_INET;
+    sin.sin6_family = AF_INET6;
     lhost = strdup(host);
-    pnum = strchr(lhost,':');
+    pnum = strchr(lhost,' ');
     if (pnum == NULL)
     {
 #if defined(VMS)
@@ -406,31 +406,32 @@
            perror("getservbyname");
            return 0;
        }
-       sin.sin_port = pse->s_port;
+       sin.sin6_port = htons(pse->s_port);
 #endif
     }
     else
     {
        *pnum++ = '\0';
        if (isdigit(*pnum))
-           sin.sin_port = htons(atoi(pnum));
+           sin.sin6_port = htons(atoi(pnum));
        else
        {
            pse = getservbyname(pnum,"tcp");
-           sin.sin_port = pse->s_port;
+           sin.sin6_port = pse->s_port;
        }
     }
-    if ((sin.sin_addr.s_addr = inet_addr(lhost)) == -1)
+    if (inet_pton(AF_INET6, lhost, &sin.sin6_addr) == 0)
     {
        if ((phe = gethostbyname(lhost)) == NULL)
        {
            perror("gethostbyname");
            return 0;
        }
-       memcpy((char *)&sin.sin_addr, phe->h_addr, phe->h_length);
+       memcpy((char *)&sin.sin6_addr, phe->h_addr, phe->h_length);
+        sin.sin6_family = phe->h_addrtype;
     }
     free(lhost);
-    sControl = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+    sControl = socket(sin.sin6_family, SOCK_STREAM, IPPROTO_TCP);
     if (sControl == -1)
     {
        perror("socket");

On Thu, Jul 23, 2009 at 12:54:04PM +0000, Debian Bug Tracking System wrote:
> 
> Thank you for filing a new Bug report with Debian.
> 
> This is an automatically generated reply to let you know your message
> has been received.
> 
> Your message is being forwarded to the package maintainers and other
> interested parties for their attention; they will reply in due course.
> 
> Your message has been sent to the package maintainer(s):
>  Debian QA Group <[email protected]>
> 
> If you wish to submit further information on this problem, please
> send it to [email protected], as before.
> 
> Please do not send mail to [email protected] unless you wish
> to report a problem with the Bug-tracking system.
> 
> 
> -- 
> 538138: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=538138
> Debian Bug Tracking System
> Contact [email protected] with problems


Folkert van Heusden

-- 

Multitail - gibkaja utilita po sledovaniju log-fajlov i vyvoda
kommand. Fil'trovanie, raskrašivanie, slijanie, vizual'noe sravnenie,
i t.d.  http://www.vanheusden.com/multitail/
----------------------------------------------------------------------
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com

Attachment: ftplib-3.1-1.patch_ipv6.bz2
Description: Binary data

Reply via email to