if library initialization has not been performed calling ares_library_init().
- 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.
#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)
.\" $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
.\" 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
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
.\" $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
.\" 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
.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.
curl_memlimit(atoi(env));
#endif
+ if (ares_library_initialized() != ARES_SUCCESS)
+ return ARES_ENOTINITIALIZED;
+
channel = malloc(sizeof(struct ares_channeldata));
if (!channel) {
*channelptr = NULL;
.PP
Win32/64 application DLLs shall not call \fIares_library_cleanup(3)\fP from
the DllMain function. Doing so will produce deadlocks and other problems.
-.SH NOTES
+.SH AVAILABILITY
This function was first introduced in c-ares version 1.6.1 along with the
definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_CLEANUP\fP as an
indication of the availability of this function.
ares_init_flags = ARES_LIB_INIT_NONE;
}
+
+int ares_library_initialized(void)
+{
+#ifdef WIN32
+ if (!ares_initialized)
+ return ARES_ENOTINITIALIZED;
+#endif
+ return ARES_SUCCESS;
+}
+
+
/* return time offset between now and (future) check, in milliseconds */
long ares__timeoffset(struct timeval *now,
struct timeval *check);
+/* returns ARES_SUCCESS if library has been initialized */
+int ares_library_initialized(void);
void ares__rc4(rc4_key* key,unsigned char *buffer_ptr, int buffer_len);
void ares__send_query(ares_channel channel, struct query *query,
struct timeval *now);
"Illegal flags specified",
"Given hostname is not numeric",
"Illegal hints flags specified",
+ "c-ares library initialization not yet performed",
"Error loading iphlpapi.dll",
"Could not find GetNetworkParams function"
};