diff --git a/ftp.spec b/ftp.spec index 35fb053..2e5ea4f 100644 --- a/ftp.spec +++ b/ftp.spec @@ -1,7 +1,7 @@ Summary: The standard UNIX FTP (File Transfer Protocol) client. Name: ftp Version: 0.17 -Release: 32.1.2.2 +Release: 32.1.2.4 License: BSD Group: Applications/Internet Source0: ftp://ftp.uk.linux.org/pub/linux/Networking/netkit-devel/netkit-ftp-%{version}.tar.bz2 @@ -19,6 +19,7 @@ Patch11: netkit-ftp-0.17-C-Frame121.patch Patch12: netkit-ftp-0.17-data.patch Patch13: netkit-ftp-0.17-multihome.patch Patch14: netkit-ftp-0.17-longnames.patch +Patch15: netkit-ftp-0.17-multiipv6.patch BuildRoot: /var/tmp/%{name}-root BuildRequires: gcc, glibc-devel, readline-devel, ncurses-devel, perl @@ -46,7 +47,8 @@ file transfers. %patch11 -p1 -b .C-Frame121 %patch12 -p1 -b .data %patch13 -p1 -b .multihome -%patch14 -p1 -b .longnames +%patch14 -p1 -b .patch +%patch15 -p1 -b .multiipv6 %build sh configure --with-c-compiler=gcc --enable-ipv6 @@ -80,7 +82,10 @@ rm -rf ${RPM_BUILD_ROOT} %{_mandir}/man5/netrc.* %changelog -* Thu Jul 25 2006 Marcela Maslanova - 0.17-32.1.2.2 +* Wed Aug 2 2006 Marcela Maslanova - 0.17-32.1.2.4 +- fix (#199145) patch for IPv6 multihome + +* Thu Jul 25 2006 Marcela Maslanova - 0.17-32.1.2.3 - fix (#196103) patch for long filenames * Wed Jul 12 2006 Jesse Keating - 0.17-32.1.2.1 diff --git a/netkit-ftp-0.17-multiipv6.patch b/netkit-ftp-0.17-multiipv6.patch new file mode 100644 index 0000000..ee93e32 --- /dev/null +++ b/netkit-ftp-0.17-multiipv6.patch @@ -0,0 +1,66 @@ +--- netkit-ftp-0.17/ftp/ftp.c.multiipv6 2006-08-02 15:03:26.000000000 +0200 ++++ netkit-ftp-0.17/ftp/ftp.c 2006-08-02 15:06:19.000000000 +0200 +@@ -78,9 +78,7 @@ + #include + #include + #include +-#include + #include +- + #include + #include + #include +@@ -132,7 +130,7 @@ + static sigjmp_buf ptabort; + static int ptabflg = 0; + static int abrtflag = 0; +-struct sockaddr_in source; ++struct sockaddr_storage source; + + void lostpeer(int); + extern int connected; +@@ -154,8 +152,8 @@ + char * + hookup(const char *host, const char *port) + { +- int s, tos, error, alen; +- socklen_t len; ++ int s, tos, error; ++ socklen_t len, alen; + static char hostnamebuf[256]; + struct addrinfo hints, *res, *res0; + char hbuf[MAXHOSTNAMELEN], pbuf[NI_MAXSERV]; +@@ -281,7 +279,15 @@ + printf("Connected to %s (%s).\n", hostname, hbuf); + alen = sizeof(source); + getsockname(s,(struct sockaddr*)&source, &alen); +- source.sin_port = 0; /* We just want the addr, not the port */ ++ switch (source.ss_family) { ++ /* We just want the addr, not the port */ ++ case AF_INET: ++ ((struct sockaddr_in *) &source)->sin_port = 0; ++ break; ++ case AF_INET6: ++ ((struct sockaddr_in6 *) &source)->sin6_port = 0; ++ break; ++ } + + if (getreply(0) > 2) { /* read startup message from server */ + if (cin) +@@ -1260,11 +1266,11 @@ + return(1); + } + if((multihome) && +- bind(data, (struct sockaddr*)&source, sizeof(source)) == -1) { +- close(data); +- data = -1; +- perror("ftp multihome bind"); +- return(1); ++ bind(data, (struct sockaddr *)&source, sizeof(source)) == -1) { ++ close(data); ++ data = -1; ++ perror("ftp multihome bind"); ++ return(1); + } + if (options & SO_DEBUG && + setsockopt(data, SOL_SOCKET, SO_DEBUG, (char *)&on,