pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/net/libfetch/files Conditionally use IP_PORTRANGE sock...
details: https://anonhg.NetBSD.org/pkgsrc/rev/951142fe0c30
branches: trunk
changeset: 538406:951142fe0c30
user: joerg <joerg%pkgsrc.org@localhost>
date: Thu Feb 07 17:42:14 2008 +0000
description:
Conditionally use IP_PORTRANGE sockopt and avoid using ss_len when other
operations already provided the value.
diffstat:
net/libfetch/files/common.h | 7 ++++++-
net/libfetch/files/ftp.c | 20 +++++++++++---------
2 files changed, 17 insertions(+), 10 deletions(-)
diffs (105 lines):
diff -r aff4ec0fccda -r 951142fe0c30 net/libfetch/files/common.h
--- a/net/libfetch/files/common.h Thu Feb 07 17:27:40 2008 +0000
+++ b/net/libfetch/files/common.h Thu Feb 07 17:42:14 2008 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: common.h,v 1.1.1.1 2008/02/07 01:48:22 joerg Exp $ */
+/* $NetBSD: common.h,v 1.2 2008/02/07 17:42:14 joerg Exp $ */
/*-
* Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
* All rights reserved.
@@ -45,6 +45,11 @@
#include <openssl/err.h>
#endif
+#if !defined(__sun) && !defined(__hpux) && !defined(__INTERIX) && \
+ !defined(__digital__) && !defined(__linux)
+#define HAVE_SA_LEN
+#endif
+
/* Connection */
typedef struct fetchconn conn_t;
struct fetchconn {
diff -r aff4ec0fccda -r 951142fe0c30 net/libfetch/files/ftp.c
--- a/net/libfetch/files/ftp.c Thu Feb 07 17:27:40 2008 +0000
+++ b/net/libfetch/files/ftp.c Thu Feb 07 17:42:14 2008 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ftp.c,v 1.6 2008/02/07 17:27:40 joerg Exp $ */
+/* $NetBSD: ftp.c,v 1.7 2008/02/07 17:42:14 joerg Exp $ */
/*-
* Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
* All rights reserved.
@@ -117,7 +117,7 @@
* Translate IPv4 mapped IPv6 address to IPv4 address
*/
static void
-unmappedaddr(struct sockaddr_in6 *sin6)
+unmappedaddr(struct sockaddr_in6 *sin6, socklen_t *len)
{
struct sockaddr_in *sin4;
uint32_t addr;
@@ -133,8 +133,8 @@
sin4->sin_addr.s_addr = addr;
sin4->sin_port = port;
sin4->sin_family = AF_INET;
-#if !defined(__sun) && !defined(__hpux) && !defined(__INTERIX) && \
- !defined(__digital__) && !defined(__linux)
+ *len = sizeof(struct sockaddr_in);
+#ifdef HAVE_SA_LEN
sin4->sin_len = sizeof(struct sockaddr_in);
#endif
}
@@ -656,7 +656,7 @@
if (getsockname(conn->sd, (struct sockaddr *)&sa, &l) == -1)
goto sysouch;
if (sa.ss_family == AF_INET6)
- unmappedaddr((struct sockaddr_in6 *)&sa);
+ unmappedaddr((struct sockaddr_in6 *)&sa, &l);
/* open data socket */
if ((sd = socket(sa.ss_family, SOCK_STREAM, IPPROTO_TCP)) == -1) {
@@ -742,7 +742,7 @@
if (getpeername(conn->sd, (struct sockaddr *)&sa, &l) == -1)
goto sysouch;
if (sa.ss_family == AF_INET6)
- unmappedaddr((struct sockaddr_in6 *)&sa);
+ unmappedaddr((struct sockaddr_in6 *)&sa, &l);
switch (sa.ss_family) {
case AF_INET6:
sin6 = (struct sockaddr_in6 *)&sa;
@@ -774,7 +774,7 @@
if (bindaddr != NULL && *bindaddr != '\0' &&
fetch_bind(sd, sa.ss_family, bindaddr) != 0)
goto sysouch;
- if (connect(sd, (struct sockaddr *)&sa, sa.ss_len) == -1)
+ if (connect(sd, (struct sockaddr *)&sa, l) == -1)
goto sysouch;
/* make the server initiate the transfer */
@@ -803,15 +803,17 @@
break;
case AF_INET:
((struct sockaddr_in *)&sa)->sin_port = 0;
+#ifdef IP_PORTRANGE
arg = low ? IP_PORTRANGE_DEFAULT : IP_PORTRANGE_HIGH;
if (setsockopt(sd, IPPROTO_IP, IP_PORTRANGE,
(char *)&arg, sizeof(arg)) == -1)
goto sysouch;
+#endif
break;
}
if (verbose)
fetch_info("binding data socket");
- if (bind(sd, (struct sockaddr *)&sa, sa.ss_len) == -1)
+ if (bind(sd, (struct sockaddr *)&sa, l) == -1)
goto sysouch;
if (listen(sd, 1) == -1)
goto sysouch;
@@ -834,7 +836,7 @@
e = -1;
sin6 = (struct sockaddr_in6 *)&sa;
sin6->sin6_scope_id = 0;
- if (getnameinfo((struct sockaddr *)&sa, sa.ss_len,
+ if (getnameinfo((struct sockaddr *)&sa, l,
hname, sizeof(hname),
NULL, 0, NI_NUMERICHOST) == 0) {
e = ftp_cmd(conn, "EPRT |%d|%s|%d|", 2, hname,
Home |
Main Index |
Thread Index |
Old Index