Merge from vendor branch TNF:
[pkgsrc.git] / net / wget / patches / patch-ab
1 $NetBSD$
2 --- src/connect.c.orig  Sun Mar 29 23:28:15 1998
3 +++ src/connect.c       Fri Sep 24 15:49:42 1999
4 @@ -62,6 +62,59 @@
5  uerr_t
6  make_connection (int *sock, char *hostname, unsigned short port)
7  {
8 +#ifdef INET6
9 +  struct sockaddr_storage sock_name;
10 +  struct sockaddr_in *sin;
11 +  struct sockaddr_in6 *sin6;
12 +  size_t socksize;
13 +
14 +  /*
15 +   * Get internet address of the host.  We can do it either by calling
16 +   * ngethostbyname, or by calling store_hostaddress, from host.c.
17 +   * storehostaddress is better since it caches calls to
18 +   * gethostbyname.
19 +   */
20 +  if (!store_hostaddress (&sock_name, hostname))
21 +    return HOSTERR;
22 +
23 +  /* Set port and protocol */
24 +  switch (sock_name.ss_family) {
25 +  case AF_INET:
26 +      sin = (struct sockaddr_in *) &sock_name;
27 +      sin->sin_family = AF_INET;
28 +#ifdef HAVE_SOCKADDR_SA_LEN
29 +      sin->sin_len = sizeof (struct sockaddr_in);
30 +#endif
31 +      sin->sin_port = htons (port);
32 +      socksize = sizeof (struct sockaddr_in);
33 +      break;
34 +  case AF_INET6:
35 +      sin6 = (struct sockaddr_in6 *) &sock_name;
36 +      sin6->sin6_family = AF_INET6;
37 +#ifdef HAVE_SOCKADDR_SA_LEN
38 +      sin6->sin6_len = sizeof (struct sockaddr_in6);
39 +#endif
40 +      sin6->sin6_port = htons (port);
41 +      socksize = sizeof (struct sockaddr_in6);
42 +      break;
43 +  default:
44 +      return HOSTERR;
45 +  }
46 +  /* Make an internet socket, stream type.  */
47 +  if ((*sock = socket (sock_name.ss_family, SOCK_STREAM, 0)) == -1)
48 +      return CONSOCKERR;
49 +
50 +  /* Connect the socket to the remote host.  */
51 +  if (connect (*sock, (struct sockaddr *) &sock_name, socksize))
52 +    {
53 +      if (errno == ECONNREFUSED)
54 +       return CONREFUSED;
55 +      else
56 +       return CONERROR;
57 +    }
58 +  DEBUGP (("Created fd %d.\n", *sock));
59 +  return NOCONERROR;
60 +#else  /* !INET6 */
61    struct sockaddr_in sock_name;
62    /* struct hostent *hptr; */
63  
64 @@ -97,6 +150,7 @@
65      }
66    DEBUGP (("Created fd %d.\n", *sock));
67    return NOCONERROR;
68 +#endif /* INET6 */
69  }
70  
71  /* Bind the local port PORT.  This does all the necessary work, which