r2992 - in udns/trunk: . debian
mikma at minisip.org
mikma at minisip.org
Wed Dec 6 15:33:00 CET 2006
Author: mikma
Date: 2006-12-06 15:32:59 +0100 (Wed, 06 Dec 2006)
New Revision: 2992
Added:
udns/trunk/NOTES
Modified:
udns/trunk/Makefile
udns/trunk/TODO
udns/trunk/debian/changelog
udns/trunk/debian/rules
udns/trunk/dnsget.c
udns/trunk/udns.3
udns/trunk/udns.h
udns/trunk/udns_dn.c
udns/trunk/udns_resolver.c
udns/trunk/udns_rr_naptr.c
udns/trunk/udns_rr_txt.c
Log:
Merge udns upstream 0.0.9pre
svn merge ../tags/upstream/0.0.8 at 2991 ../tags/upstream/0.0.9pre at 2991 .
Modified: udns/trunk/Makefile
===================================================================
--- udns/trunk/Makefile 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/Makefile 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,5 +1,5 @@
#! /usr/bin/make -rf
-# $Id: Makefile,v 1.38 2005/09/12 12:09:10 mjt Exp $
+# $Id: Makefile,v 1.42 2006/11/29 21:27:01 mjt Exp $
# libudns Makefile
#
# Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -20,13 +20,14 @@
# write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
-VERS = 0.0.8
+VERS = 0.0.9pre
SRCS = udns_dn.c udns_dntosp.c udns_parse.c udns_resolver.c udns_misc.c \
udns_rr_a.c udns_rr_ptr.c udns_rr_mx.c udns_rr_txt.c udns_bl.c \
- udns_rr_srv.c udns_codes.c
+ udns_rr_srv.c udns_rr_naptr.c udns_codes.c
USRCS = dnsget.c rblcheck.c ex-rdns.c
+DEB = debian/copyright debian/changelog debian/control debian/rules
DIST = COPYING.LGPL udns.h udns.3 dnsget.1 rblcheck.1 $(SRCS) $(USRCS) \
- Makefile TODO
+ Makefile TODO NOTES
OBJS = $(SRCS:.c=.o) $(GEN:.c=.o)
LIB = libudns.a
@@ -114,9 +115,10 @@
mv $@.tmp $@
dist: $(NAMEPFX).tar.gz
-$(NAMEPFX).tar.gz: $(DIST)
- mkdir $(NAMEPFX)
+$(NAMEPFX).tar.gz: $(DIST) $(DEB)
+ mkdir $(NAMEPFX) $(NAMEPFX)/debian
ln $(DIST) $(NAMEPFX)
+ ln $(DEB) $(NAMEPFX)/debian
tar cvfz $@ $(NAMEPFX)
rm -rf $(NAMEPFX)
subdist:
Copied: udns/trunk/NOTES (from rev 2991, udns/tags/upstream/0.0.9pre/NOTES)
Modified: udns/trunk/TODO
===================================================================
--- udns/trunk/TODO 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/TODO 2006-12-06 14:32:59 UTC (rev 2992)
@@ -2,6 +2,15 @@
The following is mostly an internal, not user-visible stuff.
+* rearrange an API to make dns_query object owned by application,
+ so that it'll look like this:
+ struct dns_query *q;
+ q = udns_query_alloc(ctx);
+ udns_query_set(q, options, domain_name, flags, ...);
+ udns_query_submit(ctx, q);
+ or
+ udns_query_resolve(ctx, q);
+
* allow NULL callbacks? Or provide separate resolver
context list of queries which are done but wich did not
have callback, and dns_pick() routine to retrieve results
@@ -26,6 +35,23 @@
* dns_init(do_open) - make the parameter opposite, aka
dns_init(skip_open) ?
+* for the above. Use separate routine for initializing the context
+ from system files, to not link stuff reading resolv.conf if it's
+ not needed. So that automatic init will not be possible.
+
+* allow TCP queue?
+
+* detect servers which don't understand EDNS0 (returning FORMERR),
+ and fall back to pre-EDNS0 for them.
+
+* for the above to work, we have to be able to find query object by
+ only ID, not ID + qdn.
+
+* And oh, qID should really be random.
+
+* more accurate error reporting. Currently, udns always returns TEMPFAIL,
+ but don't specify why it happened (ENOMEM, timeout, etc).
+
* check the error value returned by recvfrom() and
sendto() and determine which errors to ignore.
Modified: udns/trunk/debian/changelog
===================================================================
--- udns/trunk/debian/changelog 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/debian/changelog 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,3 +1,25 @@
+udns (0.0.9pre) unstable; urgency=low
+
+ * s/EOVERFLOW/ENFILE, partly to make win32 happy
+
+ * several win32 fixes
+
+ * don't use `class' in udns.h, to make C++ happy
+ (thanks Markus Koetter for pointing this out)
+
+ * fixed CNAME handling in dnsget tool. Another Thank You! goes
+ to Markus Koetter.
+
+ * NAPTR (RFC3403) support, thanks to Mikael Magnusson
+ <mikma at users.sourceforge.net> for this.
+
+ * more Win32 fixes from Mikael Magnusson. I have to admit
+ I never tried to compile it on Win32.
+
+ * added NOTES file
+
+ -- Michael Tokarev <mjt at corpit.ru> Wed, 29 Nov 2006 04:16:21 +0300
+
udns (0.0.8) unstable; urgency=low
* don't compare sockaddr_in's, but individual parts only
Modified: udns/trunk/debian/rules
===================================================================
--- udns/trunk/debian/rules 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/debian/rules 2006-12-06 14:32:59 UTC (rev 2992)
@@ -62,7 +62,7 @@
dh_install -plibudns-dev libudns.a libudns.so usr/lib
dh_install -plibudns-dev udns.h usr/include
dh_installman -plibudns-dev udns.3
- dh_installdocs -plibudns-dev TODO
+ dh_installdocs -plibudns-dev TODO NOTES
dh_installexamples -plibudns-dev ex-rdns.c
# udns-utils
Modified: udns/trunk/dnsget.c
===================================================================
--- udns/trunk/dnsget.c 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/dnsget.c 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,4 +1,4 @@
-/* $Id: dnsget.c,v 1.18 2005/05/16 12:43:26 mjt Exp $
+/* $Id: dnsget.c,v 1.22 2006/11/29 21:28:49 mjt Exp $
simple host/dig-like application using UDNS library
Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -203,7 +203,7 @@
case DNS_T_AAAA:
if (rr->dnsrr_dsz != 16) goto xperr;
- printf("%s", inet_ntop(AF_INET6, dptr, dn, DNS_MAXDN));
+ printf("%s", inet_ntop(AF_INET6, dptr, (char*)dn, DNS_MAXDN));
break;
case DNS_T_MX:
@@ -262,6 +262,25 @@
dns_dntosp(dn));
break;
+ case DNS_T_NAPTR: /* order pref flags serv regexp repl */
+ c = dptr;
+ c += 4; /* order, pref */
+ for (n = 0; n < 3; ++n)
+ if (c >= dend) goto xperr;
+ else c += *c + 1;
+ if (dns_getdn(pkt, &c, end, dn, DNS_MAXDN) <= 0 || c != dend) goto xperr;
+ c = dptr;
+ printf("%u %u", dns_get16(c+0), dns_get16(c+2));
+ c += 4;
+ for(n = 0; n < 3; ++n) {
+ putchar(' ');
+ if (verbose > 0) putchar('"');
+ c = printtxt(c);
+ if (verbose > 0) putchar('"');
+ }
+ printf(" %s.", dns_dntosp(dn));
+ break;
+
case DNS_T_KEY: /* flags(2) proto(1) algo(1) pubkey */
c = dptr;
if (c + 2 + 1 + 1 > dend) goto xperr;
@@ -466,7 +485,7 @@
struct dns_rr rr;
unsigned nrr;
unsigned char dn[DNS_MAXDN];
- const unsigned char *pkt, *cur, *end, *qdn;
+ const unsigned char *pkt, *cur, *end;
if (!result) {
dnserror(q, r);
return;
@@ -475,10 +494,9 @@
dns_getdn(pkt, &cur, end, dn, sizeof(dn));
dns_initparse(&p, NULL, pkt, cur, end);
p.dnsp_qcls = p.dnsp_qtyp = 0;
- qdn = dn;
nrr = 0;
while((r = dns_nextrr(&p, &rr)) > 0) {
- if (!dns_dnequal(qdn, rr.dnsrr_dn)) continue;
+ if (!dns_dnequal(dn, rr.dnsrr_dn)) continue;
if ((qcls == DNS_C_ANY || qcls == rr.dnsrr_cls) &&
(q->qtyp == DNS_T_ANY || q->qtyp == rr.dnsrr_typ))
++nrr;
@@ -491,10 +509,10 @@
}
else {
if (verbose == 1) {
- printf("%s.", dns_dntosp(qdn));
+ printf("%s.", dns_dntosp(dn));
printf(" CNAME %s.\n", dns_dntosp(p.dnsp_dnbuf));
}
- qdn = p.dnsp_dnbuf;
+ dns_dntodn(p.dnsp_dnbuf, dn, sizeof(dn));
}
}
}
Modified: udns/trunk/udns.3
===================================================================
--- udns/trunk/udns.3 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/udns.3 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,4 +1,4 @@
-.\" $Id: udns.3,v 1.25 2005/09/12 12:05:12 mjt Exp $
+.\" $Id: udns.3,v 1.26 2006/11/28 22:58:04 mjt Exp $
.\" udns library manpage
.\"
.\" Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -810,6 +810,48 @@
interest (if the \fIname\fR is absolute, that is, it ends up with a dot,
DNS_NOSRCH flag will be set automatically).
+.SS "NAPTR Queries"
+.PP
+.nf
+struct \fBdns_naptr\fR { /* single NAPTR record */
+ int \fBorder\fR; /* record order */
+ int \fBpreference\fR; /* preference of this record */
+ char *\fBflags\fR; /* application-specific flags */
+ char *\fBservices\fR; /* service parameters */
+ char *\fBregexp\fR; /* substitutional regular expression */
+ char *\fBreplacement\fR; /* replacement string */
+};
+struct \fBdns_rr_naptr\fR { /* NAPTR RRset */
+ char *\fBdnsnaptr_qname\fR; /* original query name */
+ char *\fBdnsnaptr_cname\fR; /* canonical name */
+ unsigned \fBdnsnaptr_ttl\fR; /* Time-To-Live (TTL) value */
+ int \fBdnsnaptr_nrr\fR; /* number of text records in the set */
+ struct dns_naptr \fBdnsnaptr_naptr\fR[]; /* array of NAPTR records */
+};
+typedef void
+ \fBdns_query_naptr_fn\fR(\fIctx\fR, struct dns_rr_naptr *\fIresult\fR, \fIdata\fR)
+dns_parse_fn \fBdns_parse_naptr\fB;
+struct dns_query *
+\fBdns_submit_naptr\fB(\fIctx\fR, const char *\fIname\fR, int \fIflags\fR,
+ dns_query_txt_fn *\fIcbck\fR, \fIdata\fR);
+struct dns_rr_naptr *
+\fBdns_resolve_naptr\fB(\fIctx\fR, const char *\fIname\fR, int \fIflags\fR);
+.fi
+.PP
+The \fBdns_rr_naptr\fR structure holds a result of an IN NAPTR (rfc3403) query.
+Callback routine for IN NAPTR queries expected to be of type
+\fBdns_query_naptr_fn\fR, expects pointer to \fBdns_rr_naptr\fR
+structure as query result instead of raw DNS packet.
+The \fBdns_parse_naptr\fR() is used to convert raw DNS reply packet into
+\fBdns_rr_naptr\fR structure (it is used
+internally and may be used directly too with generic query interface).
+Routines \fBdns_submit_naptr\fR() and \fBdns_resolve_naptr\fR() are used to
+perform IN NAPTR queries in a type-safe manner. The \fIname\fR parameter
+is the domain name in question, and \fIflags\fR is query flags bitmask,
+with one bit, DNS_NOSRCH, of practical interest (if the \fIname\fR is
+absolute, that is, it ends up with a dot, DNS_NOSRCH flag will be set
+automatically).
+
.SS "DNSBL Interface"
.PP
A DNS-based blocklists, or a DNSBLs, are in wide use nowadays, especially
Modified: udns/trunk/udns.h
===================================================================
--- udns/trunk/udns.h 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/udns.h 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,4 +1,4 @@
-/* $Id: udns.h,v 1.37 2005/09/12 12:09:10 mjt Exp $
+/* $Id: udns.h,v 1.41 2006/11/29 01:20:30 mjt Exp $
header file for the UDNS library.
Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -23,7 +23,7 @@
#ifndef UDNS_VERSION /* include guard */
-#define UDNS_VERSION "0.0.8"
+#define UDNS_VERSION "0.0.9pre"
#ifdef WIN32
# ifdef UDNS_DYNAMIC_LIBRARY
@@ -479,8 +479,7 @@
UDNS_API int
dns_cancel(struct dns_ctx *ctx, struct dns_query *q);
-/* immediately resolve a generic query, return the answer
- * and place completion status into *statusp */
+/* resolve a generic query, return the answer */
UDNS_API void *
dns_resolve_dn(struct dns_ctx *ctx,
dnscc_t *qdn, int qcls, int qtyp, int flags,
@@ -636,7 +635,7 @@
const char *name, const char *srv, const char *proto,
int flags);
-
+/* NAPTR (RFC3403) RR type */
struct dns_naptr { /* single NAPTR RR */
int order; /* NAPTR order */
int preference; /* NAPTR preference */
@@ -645,17 +644,19 @@
char *regexp; /* NAPTR regexp */
char *replacement; /* NAPTR replacement */
};
+
struct dns_rr_naptr { /* the NAPTR RRset */
dns_rr_common(dnsnaptr);
struct dns_naptr *dnsnaptr_naptr; /* array of NAPTRes */
};
UDNS_API dns_parse_fn dns_parse_naptr; /* NAPTR RR parsing routine */
typedef void /* NAPTR RR callback */
-dns_query_naptr_fn(struct dns_ctx *ctx, struct dns_rr_naptr *result, void *data);
+dns_query_naptr_fn(struct dns_ctx *ctx,
+ struct dns_rr_naptr *result, void *data);
/* submit NAPTR IN query */
UDNS_API struct dns_query *
dns_submit_naptr(struct dns_ctx *ctx, const char *name, int flags,
- dns_query_naptr_fn *cbck, void *data);
+ dns_query_naptr_fn *cbck, void *data);
/* resolve NAPTR IN query */
UDNS_API struct dns_rr_naptr *
dns_resolve_naptr(struct dns_ctx *ctx, const char *name, int flags);
Modified: udns/trunk/udns_dn.c
===================================================================
--- udns/trunk/udns_dn.c 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/udns_dn.c 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,4 +1,4 @@
-/* $Id: udns_dn.c,v 1.6 2005/09/12 10:55:21 mjt Exp $
+/* $Id: udns_dn.c,v 1.7 2006/11/28 22:45:20 mjt Exp $
domain names manipulation routines
Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -71,7 +71,7 @@
dnsc_t *const de /* end of dn: last byte that can be filled up */
= dn + (dnsiz >= DNS_MAXDN ? DNS_MAXDN : dnsiz) - 1;
dnscc_t *np = (dnscc_t *)name;
- dnscc_t *ne = np + (namelen ? namelen : strlen(np));
+ dnscc_t *ne = np + (namelen ? namelen : strlen((char*)np));
dnsc_t *llab; /* start of last label (llab[-1] will be length) */
unsigned c; /* next input character, or length of last label */
Modified: udns/trunk/udns_resolver.c
===================================================================
--- udns/trunk/udns_resolver.c 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/udns_resolver.c 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,4 +1,4 @@
-/* $Id: udns_resolver.c,v 1.53 2005/09/12 10:23:08 mjt Exp $
+/* $Id: udns_resolver.c,v 1.57 2006/11/29 01:17:43 mjt Exp $
resolver stuff (main module)
Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -24,7 +24,7 @@
#ifdef WIN32
# include <winsock2.h> /* includes <windows.h> */
# include <ws2tcpip.h> /* needed for struct in6_addr */
-# include <iphlpapi.h>
+# include <iphlpapi.h> /* for dns server addresses etc */
# undef HAVE_POLL
# define inet_aton(cp, inp) inet_pton(AF_INET, (cp), (inp))
#else
@@ -258,7 +258,7 @@
if (!serv)
return (ctx->dnsc_nserv = 0);
if (ctx->dnsc_nserv >= DNS_MAXSERV)
- return errno = EOVERFLOW, -1;
+ return errno = ENFILE, -1;
sns = &ctx->dnsc_serv[ctx->dnsc_nserv];
memset(sns, 0, sizeof(*sns));
#if HAVE_INET6
@@ -304,7 +304,7 @@
if (!sa)
return (ctx->dnsc_nserv = 0);
if (ctx->dnsc_nserv >= DNS_MAXSERV)
- return errno = EOVERFLOW, -1;
+ return errno = ENFILE, -1;
#if HAVE_INET6
else if (sa->sa_family == AF_INET6)
ctx->dnsc_serv[ctx->dnsc_nserv].sin6 = *(struct sockaddr_in6*)sa;
@@ -383,7 +383,7 @@
if (!srch)
return (ctx->dnsc_nsrch = 0);
else if (ctx->dnsc_nsrch >= DNS_MAXSRCH)
- return errno = EOVERFLOW, -1;
+ return errno = ENFILE, -1;
else if (dns_sptodn(srch, ctx->dnsc_srch[ctx->dnsc_nsrch], DNS_MAXDN) <= 0)
return errno = EINVAL, -1;
else
@@ -475,7 +475,7 @@
int ret = -1;
h_iphlpapi = LoadLibrary("iphlpapi.dll");
- if (h_iphlpapi == HANDLE_ERROR)
+ if (!h_iphlpapi)
return -1;
pfnGetAdAddrs = (GetAdaptersAddressesFunc)
GetProcAddress(h_iphlpapi, "GetAdaptersAddresses");
@@ -771,7 +771,7 @@
void dns_close(struct dns_ctx *ctx) {
SETCTXINITED(ctx);
if (ctx->dnsc_udpsock < 0) return;
- close(ctx->dnsc_udpsock);
+ closesocket(ctx->dnsc_udpsock);
ctx->dnsc_udpsock = -1;
free(ctx->dnsc_pbuf);
ctx->dnsc_pbuf = NULL;
@@ -1270,9 +1270,6 @@
void *dns_resolve(struct dns_ctx *ctx, struct dns_query *q) {
time_t now;
-#ifdef WIN32
-# warning fixme: poll()/select() on WIN32 (WaitForMultipleObjects?)
-#endif
#ifdef HAVE_POLL
struct pollfd pfd;
#else
Modified: udns/trunk/udns_rr_naptr.c
===================================================================
--- udns/trunk/udns_rr_naptr.c 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/udns_rr_naptr.c 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,4 +1,4 @@
-/* $Id: udns_rr_mx.c,v 1.13 2005/04/20 06:44:34 mjt Exp $
+/* $Id: udns_rr_naptr.c,v 1.1 2006/11/28 22:58:04 mjt Exp $
parse/query NAPTR IN records
Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -27,40 +27,30 @@
#include <assert.h>
#include "udns.h"
-static int dns_str_len(dnscc_t **cur, dnscc_t *ep)
+/* Get a single string for NAPTR record, pretty much like a DN label.
+ * String length is in first byte in *cur, so it can't be >255.
+ */
+static int dns_getstr(dnscc_t **cur, dnscc_t *ep, char *buf)
{
- int l;
+ unsigned l;
dnscc_t *cp = *cur;
l = *cp++;
if (cp + l > ep)
return DNS_E_PROTOCOL;
+ if (buf) {
+ memcpy(buf, cp, l);
+ buf[l] = '\0';
+ }
cp += l;
*cur = cp;
return l + 1;
}
-static int dns_getstr(dnscc_t **cur, dnscc_t *ep, char *buf, size_t size)
-{
- int l;
- dnscc_t *cp = *cur;
-
- l = *cp++;
- if (l >= size)
- return DNS_E_PROTOCOL;
- memcpy(buf, cp, l);
- cp += l;
- buf[l] = '\0';
-
- *cur = cp;
- return l + 1;
-}
-
-
int
dns_parse_naptr(dnscc_t *qdn, dnscc_t *pkt, dnscc_t *cur, dnscc_t *end,
- void **result) {
+ void **result) {
struct dns_rr_naptr *ret;
struct dns_parse p;
struct dns_rr rr;
@@ -76,13 +66,15 @@
while((r = dns_nextrr(&p, &rr)) > 0) {
int i;
dnscc_t *ep = rr.dnsrr_dend;
+
+ /* first 4 bytes: order & preference */
cur = rr.dnsrr_dptr + 4;
/* flags, services and regexp */
- for (i=0; i<3; i++) {
- r = dns_str_len(&cur, ep);
+ for (i = 0; i < 3; i++) {
+ r = dns_getstr(&cur, ep, NULL);
if (r < 0)
- return r;
+ return r;
l += r;
}
/* replacement */
@@ -108,26 +100,13 @@
sp = (char*)(&ret->dnsnaptr_naptr[p.dnsp_nrr]);
for (dns_rewind(&p, qdn), r = 0; dns_nextrr(&p, &rr); ++r) {
cur = rr.dnsrr_dptr;
-
- /* order */
- ret->dnsnaptr_naptr[r].order = dns_get16(cur);
- cur += 2;
- /* preference */
- ret->dnsnaptr_naptr[r].preference = dns_get16(cur);
- cur += 2;
- /* flags */
- ret->dnsnaptr_naptr[r].flags = sp;
- sp += dns_getstr(&cur, end, sp, DNS_MAXDN);
- /* service */
- ret->dnsnaptr_naptr[r].service = sp;
- sp += dns_getstr(&cur, end, sp, DNS_MAXDN);
- /* regexp */
- ret->dnsnaptr_naptr[r].regexp = sp;
- sp += dns_getstr(&cur, end, sp, DNS_MAXDN);
- /* replacement */
- ret->dnsnaptr_naptr[r].replacement = sp;
+ ret->dnsnaptr_naptr[r].order = dns_get16(cur); cur += 2;
+ ret->dnsnaptr_naptr[r].preference = dns_get16(cur); cur += 2;
+ sp += dns_getstr(&cur, end, (ret->dnsnaptr_naptr[r].flags = sp));
+ sp += dns_getstr(&cur, end, (ret->dnsnaptr_naptr[r].service = sp));
+ sp += dns_getstr(&cur, end, (ret->dnsnaptr_naptr[r].regexp = sp));
dns_getdn(pkt, &cur, end, dn, sizeof(dn));
- sp += dns_dntop(dn, sp, DNS_MAXNAME);
+ sp += dns_dntop(dn, (ret->dnsnaptr_naptr[r].replacement = sp), DNS_MAXNAME);
}
dns_stdrr_finish((struct dns_rr_null *)ret, sp, &p);
*result = ret;
@@ -136,7 +115,7 @@
struct dns_query *
dns_submit_naptr(struct dns_ctx *ctx, const char *name, int flags,
- dns_query_naptr_fn *cbck, void *data) {
+ dns_query_naptr_fn *cbck, void *data) {
return
dns_submit_p(ctx, name, DNS_C_IN, DNS_T_NAPTR, flags,
dns_parse_naptr, (dns_query_fn *)cbck, data);
Modified: udns/trunk/udns_rr_txt.c
===================================================================
--- udns/trunk/udns_rr_txt.c 2006-12-06 12:57:21 UTC (rev 2991)
+++ udns/trunk/udns_rr_txt.c 2006-12-06 14:32:59 UTC (rev 2992)
@@ -1,4 +1,4 @@
-/* $Id: udns_rr_txt.c,v 1.14 2005/04/20 06:44:34 mjt Exp $
+/* $Id: udns_rr_txt.c,v 1.15 2006/11/28 22:45:20 mjt Exp $
parse/query TXT records
Copyright (C) 2005 Michael Tokarev <mjt at corpit.ru>
@@ -78,7 +78,7 @@
ret->dnstxt_txt[r].len = sp - ret->dnstxt_txt[r].txt;
*sp++ = '\0';
}
- dns_stdrr_finish((struct dns_rr_null *)ret, sp, &p);
+ dns_stdrr_finish((struct dns_rr_null *)ret, (char*)sp, &p);
*result = ret;
return 0;
}
More information about the Minisip-devel
mailing list