~ubuntu-branches/ubuntu/precise/openvpn/precise-updates

« back to all changes in this revision

Viewing changes to .pc/jjo-ipv6-support.patch/socket.c

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2010-10-05 06:21:14 UTC
  • mfrom: (1.1.16 upstream) (10.2.8 sid)
  • Revision ID: james.westby@ubuntu.com-20101005062114-18lyqud9e3p4g735
Tags: 2.1.3-1ubuntu1
* Merge from debian unstable.  Remaining changes:
  + debian/openvpn.init.d:
    - Do not use start-stop-daemon and </dev/null to avoid blocking boot.
    - Show per-VPN result messages.
    - Add "--script-security 2" by default for backwards compatablitiy
  + debian/control: Add lsb-base >= 3.2-14 to allow status_of_proc()

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 *             packet encryption, packet authentication, and
6
6
 *             packet compression.
7
7
 *
8
 
 *  Copyright (C) 2002-2009 OpenVPN Technologies, Inc. <sales@openvpn.net>
 
8
 *  Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
9
9
 *
10
10
 *  This program is free software; you can redistribute it and/or modify
11
11
 *  it under the terms of the GNU General Public License version 2
89
89
         bool *succeeded,
90
90
         volatile int *signal_received)
91
91
{
 
92
  return getaddr_multi (flags, hostname, resolve_retry_seconds, succeeded, signal_received, NULL);
 
93
}
 
94
 
 
95
in_addr_t
 
96
getaddr_multi (unsigned int flags,
 
97
         const char *hostname,
 
98
         int resolve_retry_seconds,
 
99
         bool *succeeded,
 
100
         volatile int *signal_received,
 
101
         struct resolve_list *reslist)
 
102
{
92
103
  struct in_addr ia;
93
104
  int status;
94
105
  int sigrec = 0;
95
106
  int msglevel = (flags & GETADDR_FATAL) ? M_FATAL : D_RESOLVE_ERRORS;
96
107
  struct gc_arena gc = gc_new ();
97
108
 
 
109
  if (reslist)
 
110
    reslist->len = 0;
 
111
 
98
112
  if (flags & GETADDR_RANDOMIZE)
99
113
    hostname = hostname_randomize(hostname, &gc);
100
114
 
212
226
                ++n;
213
227
              ASSERT (n >= 2);
214
228
 
215
 
              msg (D_RESOLVE_ERRORS, "RESOLVE: NOTE: %s resolves to %d addresses, choosing one by random",
 
229
              msg (D_RESOLVE_ERRORS, "RESOLVE: NOTE: %s resolves to %d addresses",
216
230
                   hostname,
217
231
                   n);
218
232
 
219
233
              /* choose address randomly, for basic load-balancing capability */
220
 
              ia.s_addr = *(in_addr_t *) (h->h_addr_list[get_random () % n]);
 
234
              /*ia.s_addr = *(in_addr_t *) (h->h_addr_list[get_random () % n]);*/
 
235
 
 
236
              /* choose first address */
 
237
              ia.s_addr = *(in_addr_t *) (h->h_addr_list[0]);
 
238
 
 
239
              if (reslist)
 
240
                {
 
241
                  int i;
 
242
                  for (i = 0; i < n && i < SIZE(reslist->data); ++i)
 
243
                    {
 
244
                      in_addr_t a = *(in_addr_t *) (h->h_addr_list[i]);
 
245
                      if (flags & GETADDR_HOST_ORDER)
 
246
                        a = ntohl(a);
 
247
                      reslist->data[i] = a;
 
248
                    }
 
249
                  reslist->len = i;
 
250
                }
221
251
            }
222
252
        }
223
253
 
486
516
static bool
487
517
socket_set_tcp_nodelay (int sd, int state)
488
518
{
489
 
#if defined(HAVE_SETSOCKOPT) && defined(IPPROTO_TCP) && defined(TCP_NODELAY)
 
519
#if defined(WIN32) || (defined(HAVE_SETSOCKOPT) && defined(IPPROTO_TCP) && defined(TCP_NODELAY))
490
520
  if (setsockopt (sd, IPPROTO_TCP, TCP_NODELAY, (void *) &state, sizeof (state)) != 0)
491
521
    {
492
522
      msg (M_WARN, "NOTE: setsockopt TCP_NODELAY=%d failed", state);
1291
1321
  else if (mode != LS_MODE_TCP_ACCEPT_FROM)
1292
1322
    {
1293
1323
      create_socket (sock);
 
1324
 
 
1325
      /* set socket buffers based on --sndbuf and --rcvbuf options */
 
1326
      socket_set_buffers (sock->sd, &sock->socket_buffer_sizes);
 
1327
 
1294
1328
      resolve_bind_local (sock);
1295
1329
      resolve_remote (sock, 1, NULL, NULL);
1296
1330
    }
1497
1531
        }
1498
1532
    }
1499
1533
 
1500
 
  /* set socket buffers based on --sndbuf and --rcvbuf options */
1501
 
  socket_set_buffers (sock->sd, &sock->socket_buffer_sizes);
1502
 
 
1503
1534
  /* set misc socket parameters */
1504
1535
  socket_set_flags (sock->sd, sock->sockflags);
1505
1536