Commit 1c93d9dc authored by Yang Tse's avatar Yang Tse
Browse files

Make ares_init(), ares_dup() and ares_init_options() return ARES_ENOTINITIALIZED

if library initialization has not been performed calling ares_library_init().
parent 675d6ec5
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -6,3 +6,13 @@ ares_gethostbyname
- When built to support IPv6, it needs to also support PF_UNSPEC or similar,
  so that an application can ask for any protocol and then c-ares would return
  all known resolves and not just explicitly IPv4 _or_ IPv6 resolves.

ares_process

- Upon next ABI brakage ares_process() could/should be changed to return 'int'
  and return ARES_ENOTINITIALIZED if ares_library_init() has not been called.

ares_process_fd

- Upon next ABI brakage ares_process_fd() could/should be changed to return
  'int' and return ARES_ENOTINITIALIZED if library has not been initialized.
+5 −2
Original line number Diff line number Diff line
@@ -94,9 +94,12 @@ extern "C" {
#define ARES_ENONAME            19
#define ARES_EBADHINTS          20

/* Uninitialized library error code */
#define ARES_ENOTINITIALIZED    21

/* ares_library_init error codes */
#define ARES_ELOADIPHLPAPI           21
#define ARES_EADDRGETNETWORKPARAMS   22
#define ARES_ELOADIPHLPAPI           22
#define ARES_EADDRGETNETWORKPARAMS   23

/* Flag values */
#define ARES_FLAG_USEVC         (1 << 0)
+4 −3
Original line number Diff line number Diff line
.\" $Id$
.\"
.\" Copyright (C) 2007-2008 by Daniel Stenberg
.\" Copyright (C) 2004-2009 by Daniel Stenberg
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
@@ -14,7 +14,7 @@
.\" this software for any purpose.  It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_DUP 3 "2 Dec 2008"
.TH ARES_DUP 3 "26 May 2009"
.SH NAME
ares_dup \- Duplicate a resolver channel
.SH SYNOPSIS
@@ -35,7 +35,8 @@ with additional options set exactly as the \fIsource\fP channel has them
configured.
.SH SEE ALSO
.BR ares_destroy(3),
.BR ares_init(3)
.BR ares_init(3),
.BR ares_library_init(3)
.SH AVAILABILITY
ares_dup(3) was added in c-ares 1.6.0
.SH AUTHOR
+9 −3
Original line number Diff line number Diff line
.\" $Id$
.\"
.\" Copyright 1998 by the Massachusetts Institute of Technology.
.\" Copyright (C) 2007-2008 by Daniel Stenberg
.\" Copyright (C) 2004-2009 by Daniel Stenberg
.\"
.\" Permission to use, copy, modify, and distribute this
.\" software and its documentation for any purpose and without
@@ -15,7 +15,7 @@
.\" this software for any purpose.  It is provided "as is"
.\" without express or implied warranty.
.\"
.TH ARES_INIT 3 "13 May 2008"
.TH ARES_INIT 3 "26 May 2009"
.SH NAME
ares_init, ares_init_options \- Initialize a resolver channel
.SH SYNOPSIS
@@ -184,10 +184,16 @@ A configuration file could not be read.
.TP 14
.B ARES_ENOMEM
The process's available memory was exhausted.
.TP 14
.B ARES_ENOTINITIALIZED
c-ares library initialization not yet performed.
.SH SEE ALSO
.BR ares_destroy(3),
.BR ares_dup(3)
.BR ares_dup(3),
.BR ares_library_init(3)
.SH AUTHOR
Greg Hudson, MIT Information Systems
.br
Copyright 1998 by the Massachusetts Institute of Technology.
.br
Copyright (C) 2004-2009 by Daniel Stenberg.
+3 −0
Original line number Diff line number Diff line
@@ -129,6 +129,9 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
    curl_memlimit(atoi(env));
#endif

  if (ares_library_initialized() != ARES_SUCCESS)
    return ARES_ENOTINITIALIZED;

  channel = malloc(sizeof(struct ares_channeldata));
  if (!channel) {
    *channelptr = NULL;
Loading