mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-10 16:31:00 +00:00
Compare commits
11
Commits
v2.87test3
...
v2.87test4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72fac0810c | ||
|
|
c166c07a93 | ||
|
|
39a625ff72 | ||
|
|
ad32ca18a7 | ||
|
|
efea282396 | ||
|
|
33d6a01cd3 | ||
|
|
d290630d31 | ||
|
|
d2ad5dc073 | ||
|
|
68ab5127af | ||
|
|
089a11f340 | ||
|
|
de1d04eb66 |
No files matched your search
@@ -1,6 +0,0 @@
|
|||||||
This packaging is now unmaintained in the dnsmasq source: dnsmasq is
|
|
||||||
included in Suse proper, and up-to-date packages are now available
|
|
||||||
from
|
|
||||||
|
|
||||||
ftp://ftp.suse.com/pub/people/ug/
|
|
||||||
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
This is a patch against SuSEfirewall2-3.1-206 (SuSE 9.x and older)
|
|
||||||
It fixes the dependency from the dns daemon name 'named'
|
|
||||||
After appending the patch, the SuSEfirewall is again able to autodetect
|
|
||||||
the dnsmasq named service.
|
|
||||||
This is a very old bug in the SuSEfirewall script.
|
|
||||||
The SuSE people think the name of the dns server will always 'named'
|
|
||||||
|
|
||||||
|
|
||||||
--- /sbin/SuSEfirewall2.orig 2004-01-23 13:30:09.000000000 +0100
|
|
||||||
+++ /sbin/SuSEfirewall2 2004-01-23 13:31:56.000000000 +0100
|
|
||||||
@@ -764,7 +764,7 @@
|
|
||||||
echo 'FW_ALLOW_INCOMING_HIGHPORTS_UDP should be set to yes, if you are running a DNS server!'
|
|
||||||
|
|
||||||
test "$FW_SERVICE_AUTODETECT" = yes -o "$FW_SERVICE_AUTODETECT" = dmz -o "$FW_SERVICE_AUTODETECT" = ext && {
|
|
||||||
- test "$FW_SERVICE_DNS" = no -a '!' "$START_NAMED" = no && check_srv named && {
|
|
||||||
+ test "$FW_SERVICE_DNS" = no -a '!' "$START_NAMED" = no && check_srv dnsmasq && {
|
|
||||||
echo -e 'Warning: detected activated named, enabling FW_SERVICE_DNS!
|
|
||||||
You still have to allow tcp/udp port 53 on internal, dmz and/or external.'
|
|
||||||
FW_SERVICE_DNS=$FW_SERVICE_AUTODETECT
|
|
||||||
@@ -878,7 +878,7 @@
|
|
||||||
test -e /etc/resolv.conf || echo "Warning: /etc/resolv.conf not found"
|
|
||||||
# Get ports/IP bindings of NAMED/SQUID
|
|
||||||
test "$FW_SERVICE_DNS" = yes -o "$FW_SERVICE_DNS" = dmz -o "$FW_SERVICE_DNS" = ext -o "$START_NAMED" = yes && DNS_PORT=`$LSOF -i -n -P | \
|
|
||||||
- $AWK -F: '/^named .* UDP / {print $2}'| $GREP -vw 53 | $SORT -un`
|
|
||||||
+ $AWK -F: '/^dnsmasq .* UDP / {print $2}'| $GREP -vw 53 | $SORT -un`
|
|
||||||
test "$FW_SERVICE_SQUID" = yes -o "$FW_SERVICE_SQUID" = dmz -o "$FW_SERVICE_SQUID" = ext -o "$START_SQUID" = yes && SQUID_PORT=`$LSOF -i -n -P | \
|
|
||||||
$AWK -F: '/^squid .* UDP/ {print $2}'| $SORT -un`
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
--- man/dnsmasq.8 2004-08-08 20:57:56.000000000 +0200
|
|
||||||
+++ man/dnsmasq.8 2004-08-12 00:40:01.000000000 +0200
|
|
||||||
@@ -69,7 +69,7 @@
|
|
||||||
.TP
|
|
||||||
.B \-g, --group=<groupname>
|
|
||||||
Specify the group which dnsmasq will run
|
|
||||||
-as. The defaults to "dip", if available, to facilitate access to
|
|
||||||
+as. The defaults to "dialout", if available, to facilitate access to
|
|
||||||
/etc/ppp/resolv.conf which is not normally world readable.
|
|
||||||
.TP
|
|
||||||
.B \-v, --version
|
|
||||||
--- src/config.h 2004-08-11 11:39:18.000000000 +0200
|
|
||||||
+++ src/config.h 2004-08-12 00:40:01.000000000 +0200
|
|
||||||
@@ -44,7 +44,7 @@
|
|
||||||
#endif
|
|
||||||
#define DEFLEASE 3600 /* default lease time, 1 hour */
|
|
||||||
#define CHUSER "nobody"
|
|
||||||
-#define CHGRP "dip"
|
|
||||||
+#define CHGRP "dialout"
|
|
||||||
#define DHCP_SERVER_PORT 67
|
|
||||||
#define DHCP_CLIENT_PORT 68
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# General
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Name: dnsmasq
|
|
||||||
Version: 2.33
|
|
||||||
Release: 1
|
|
||||||
Copyright: GPL
|
|
||||||
Group: Productivity/Networking/DNS/Servers
|
|
||||||
Vendor: Simon Kelley
|
|
||||||
Packager: Simon Kelley
|
|
||||||
URL: http://www.thekelleys.org.uk/dnsmasq
|
|
||||||
Provides: dns_daemon
|
|
||||||
Conflicts: bind bind8 bind9
|
|
||||||
PreReq: %fillup_prereq %insserv_prereq
|
|
||||||
Autoreqprov: on
|
|
||||||
Source0: %{name}-%{version}.tar.bz2
|
|
||||||
BuildRoot: /var/tmp/%{name}-%{version}
|
|
||||||
Summary: A lightweight caching nameserver
|
|
||||||
|
|
||||||
%description
|
|
||||||
Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP server. It
|
|
||||||
is designed to provide DNS and, optionally, DHCP, to a small network. It can
|
|
||||||
serve the names of local machines which are not in the global DNS. The DHCP
|
|
||||||
server integrates with the DNS server and allows machines with DHCP-allocated
|
|
||||||
addresses to appear in the DNS with names configured either in each host or
|
|
||||||
in a central configuration file. Dnsmasq supports static and dynamic DHCP
|
|
||||||
leases and BOOTP for network booting of diskless machines.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Build
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -q
|
|
||||||
patch -p0 <rpm/%{name}-SuSE.patch
|
|
||||||
|
|
||||||
%build
|
|
||||||
%{?suse_update_config:%{suse_update_config -f}}
|
|
||||||
make all-i18n DESTDIR=$RPM_BUILD_ROOT PREFIX=/usr
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Install
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%install
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
mkdir -p ${RPM_BUILD_ROOT}/etc/init.d
|
|
||||||
make install-i18n DESTDIR=$RPM_BUILD_ROOT PREFIX=/usr
|
|
||||||
install -o root -g root -m 755 rpm/rc.dnsmasq-suse $RPM_BUILD_ROOT/etc/init.d/dnsmasq
|
|
||||||
install -o root -g root -m 644 dnsmasq.conf.example $RPM_BUILD_ROOT/etc/dnsmasq.conf
|
|
||||||
strip $RPM_BUILD_ROOT/usr/sbin/dnsmasq
|
|
||||||
ln -sf ../../etc/init.d/dnsmasq $RPM_BUILD_ROOT/usr/sbin/rcdnsmasq
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Clean up
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Post-install scriptlet
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%post
|
|
||||||
%{fillup_and_insserv dnsmasq}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Post-uninstall scriptlet
|
|
||||||
#
|
|
||||||
# The %postun script executes after the package has been removed. It is the
|
|
||||||
# last chance for a package to clean up after itself.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%postun
|
|
||||||
%{insserv_cleanup}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# File list
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root)
|
|
||||||
%doc CHANGELOG COPYING FAQ doc.html setup.html UPGRADING_to_2.0 rpm/README.susefirewall
|
|
||||||
%doc contrib
|
|
||||||
%config /etc/init.d/dnsmasq
|
|
||||||
%config /etc/dnsmasq.conf
|
|
||||||
/usr/sbin/rcdnsmasq
|
|
||||||
/usr/sbin/dnsmasq
|
|
||||||
/usr/share/locale/*/LC_MESSAGES/*
|
|
||||||
%doc %{_mandir}/man8/dnsmasq.8.gz
|
|
||||||
%doc %{_mandir}/*/man8/dnsmasq.8.gz
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# init.d/dnsmasq
|
|
||||||
#
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: dnsmasq
|
|
||||||
# Required-Start: $network $remote_fs $syslog
|
|
||||||
# Required-Stop:
|
|
||||||
# Default-Start: 3 5
|
|
||||||
# Default-Stop:
|
|
||||||
# Description: Starts internet name service masq caching server (DNS)
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
NAMED_BIN=/usr/sbin/dnsmasq
|
|
||||||
NAMED_PID=/var/run/dnsmasq.pid
|
|
||||||
NAMED_CONF=/etc/dnsmasq.conf
|
|
||||||
|
|
||||||
if [ ! -x $NAMED_BIN ] ; then
|
|
||||||
echo -n "dnsmasq not installed ! "
|
|
||||||
exit 5
|
|
||||||
fi
|
|
||||||
|
|
||||||
. /etc/rc.status
|
|
||||||
rc_reset
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
echo -n "Starting name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
if [ $? -eq 0 ] ; then
|
|
||||||
echo -n "- Warning: dnsmasq already running ! "
|
|
||||||
else
|
|
||||||
[ -e $NAMED_PID ] && echo -n "- Warning: $NAMED_PID exists ! "
|
|
||||||
fi
|
|
||||||
startproc -p $NAMED_PID $NAMED_BIN -u nobody
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
echo -n "Shutting name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
[ $? -ne 0 ] && echo -n "- Warning: dnsmasq not running ! "
|
|
||||||
killproc -p $NAMED_PID -TERM $NAMED_BIN
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
try-restart)
|
|
||||||
$0 stop && $0 start
|
|
||||||
rc_status
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
$0 stop
|
|
||||||
$0 start
|
|
||||||
rc_status
|
|
||||||
;;
|
|
||||||
force-reload)
|
|
||||||
$0 reload
|
|
||||||
rc_status
|
|
||||||
;;
|
|
||||||
reload)
|
|
||||||
echo -n "Reloading name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
[ $? -ne 0 ] && echo -n "- Warning: dnsmasq not running ! "
|
|
||||||
killproc -p $NAMED_PID -HUP $NAMED_BIN
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
echo -n "Checking for name service masq caching server "
|
|
||||||
checkproc -p $NAMED_PID $NAMED_BIN
|
|
||||||
rc_status -v
|
|
||||||
;;
|
|
||||||
probe)
|
|
||||||
test $NAMED_CONF -nt $NAMED_PID && echo reload
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
rc_exit
|
|
||||||
|
|
||||||
+1
-3
@@ -518,9 +518,7 @@ Allowed prefix lengths are 1-32 (IPv4) and 1-128 (IPv6). If the prefix length is
|
|||||||
Specify an IP address to return for any host in the given domains.
|
Specify an IP address to return for any host in the given domains.
|
||||||
Queries in the domains are never forwarded and always replied to
|
Queries in the domains are never forwarded and always replied to
|
||||||
with the specified IP address which may be IPv4 or IPv6. To give
|
with the specified IP address which may be IPv4 or IPv6. To give
|
||||||
both IPv4 and IPv6 addresses for a domain, use repeated \fB--address\fP flags.
|
multiple addresses or both IPv4 and IPv6 addresses for a domain, use repeated \fB--address\fP flags.
|
||||||
To include multiple IP addresses for a single query, use
|
|
||||||
\fB--addn-hosts=<path>\fP instead.
|
|
||||||
Note that /etc/hosts and DHCP leases override this for individual
|
Note that /etc/hosts and DHCP leases override this for individual
|
||||||
names. A common use of this is to redirect the entire doubleclick.net
|
names. A common use of this is to redirect the entire doubleclick.net
|
||||||
domain to some friendly local web server to avoid banner ads. The
|
domain to some friendly local web server to avoid banner ads. The
|
||||||
|
|||||||
+13
-1
@@ -17,8 +17,13 @@
|
|||||||
/* Declare static char *compiler_opts in config.h */
|
/* Declare static char *compiler_opts in config.h */
|
||||||
#define DNSMASQ_COMPILE_OPTS
|
#define DNSMASQ_COMPILE_OPTS
|
||||||
|
|
||||||
|
/* dnsmasq.h has to be included first as it sources config.h */
|
||||||
#include "dnsmasq.h"
|
#include "dnsmasq.h"
|
||||||
|
|
||||||
|
#if defined(HAVE_IDN) || defined(HAVE_LIBIDN2) || defined(LOCALEDIR)
|
||||||
|
#include <locale.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
struct daemon *daemon;
|
struct daemon *daemon;
|
||||||
|
|
||||||
static volatile pid_t pid = 0;
|
static volatile pid_t pid = 0;
|
||||||
@@ -69,8 +74,10 @@ int main (int argc, char **argv)
|
|||||||
int tftp_prefix_missing = 0;
|
int tftp_prefix_missing = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LOCALEDIR
|
#if defined(HAVE_IDN) || defined(HAVE_LIBIDN2) || defined(LOCALEDIR)
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
|
#endif
|
||||||
|
#ifdef LOCALEDIR
|
||||||
bindtextdomain("dnsmasq", LOCALEDIR);
|
bindtextdomain("dnsmasq", LOCALEDIR);
|
||||||
textdomain("dnsmasq");
|
textdomain("dnsmasq");
|
||||||
#endif
|
#endif
|
||||||
@@ -1682,6 +1689,11 @@ static void poll_resolv(int force, int do_reload, time_t now)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* If we're delaying things, we don't call check_servers(), but
|
||||||
|
reload_servers() may have deleted some servers, rendering the server_array
|
||||||
|
invalid, so just rebuild that here. Once reload_servers() succeeds,
|
||||||
|
we call check_servers() above, which calls build_server_array itself. */
|
||||||
|
build_server_array();
|
||||||
latest->mtime = 0;
|
latest->mtime = 0;
|
||||||
if (!warned)
|
if (!warned)
|
||||||
{
|
{
|
||||||
|
|||||||
+7
-7
@@ -395,7 +395,7 @@ int is_local_answer(time_t now, int first, char *name)
|
|||||||
|
|
||||||
size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header *header, char *name, char *limit, int first, int last, int ede)
|
size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header *header, char *name, char *limit, int first, int last, int ede)
|
||||||
{
|
{
|
||||||
int trunc = 0;
|
int trunc = 0, anscount = 0;
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
int start;
|
int start;
|
||||||
union all_addr addr;
|
union all_addr addr;
|
||||||
@@ -418,9 +418,8 @@ size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header
|
|||||||
else
|
else
|
||||||
addr.addr4 = srv->addr;
|
addr.addr4 = srv->addr;
|
||||||
|
|
||||||
header->ancount = htons(ntohs(header->ancount) + 1);
|
if (add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_A, C_IN, "4", &addr))
|
||||||
if (!add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_A, C_IN, "4", &addr))
|
anscount++;
|
||||||
return 0;
|
|
||||||
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV6, name, (union all_addr *)&addr, NULL, 0);
|
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV6, name, (union all_addr *)&addr, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -434,13 +433,14 @@ size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header
|
|||||||
else
|
else
|
||||||
addr.addr6 = srv->addr;
|
addr.addr6 = srv->addr;
|
||||||
|
|
||||||
header->ancount = htons(ntohs(header->ancount) + 1);
|
if (add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_AAAA, C_IN, "6", &addr))
|
||||||
add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_AAAA, C_IN, "6", &addr);
|
anscount++;
|
||||||
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV4, name, (union all_addr *)&addr, NULL, 0);
|
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV4, name, (union all_addr *)&addr, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trunc)
|
if (trunc)
|
||||||
header->hb3 |= HB3_TC;
|
header->hb3 |= HB3_TC;
|
||||||
|
header->ancount = htons(anscount);
|
||||||
|
|
||||||
return p - (unsigned char *)header;
|
return p - (unsigned char *)header;
|
||||||
}
|
}
|
||||||
@@ -630,7 +630,7 @@ int add_update_server(int flags,
|
|||||||
/* See if there is a suitable candidate, and unmark
|
/* See if there is a suitable candidate, and unmark
|
||||||
only do this for forwarding servers, not
|
only do this for forwarding servers, not
|
||||||
address or local, to avoid delays on large numbers. */
|
address or local, to avoid delays on large numbers. */
|
||||||
if (flags & SERV_IS_LOCAL)
|
if (!(flags & SERV_IS_LOCAL))
|
||||||
for (serv = daemon->servers; serv; serv = serv->next)
|
for (serv = daemon->servers; serv; serv = serv->next)
|
||||||
if ((serv->flags & SERV_MARK) &&
|
if ((serv->flags & SERV_MARK) &&
|
||||||
hostname_isequal(alloc_domain, serv->domain))
|
hostname_isequal(alloc_domain, serv->domain))
|
||||||
|
|||||||
+5
-3
@@ -2227,7 +2227,9 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
comma = split(arg);
|
comma = split(arg);
|
||||||
|
|
||||||
new = opt_malloc(sizeof(struct auth_zone));
|
new = opt_malloc(sizeof(struct auth_zone));
|
||||||
new->domain = opt_string_alloc(arg);
|
new->domain = canonicalise_opt(arg);
|
||||||
|
if (!new->domain)
|
||||||
|
ret_err_free(_("invalid auth-zone"), new);
|
||||||
new->subnet = NULL;
|
new->subnet = NULL;
|
||||||
new->exclude = NULL;
|
new->exclude = NULL;
|
||||||
new->interface_names = NULL;
|
new->interface_names = NULL;
|
||||||
@@ -2758,7 +2760,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
|
|
||||||
if (!arg || !*arg)
|
if (!arg || !*arg)
|
||||||
flags = SERV_LITERAL_ADDRESS;
|
flags = SERV_LITERAL_ADDRESS;
|
||||||
else if (option != 'S')
|
else if (option == 'A')
|
||||||
{
|
{
|
||||||
/* # as literal address means return zero address for 4 and 6 */
|
/* # as literal address means return zero address for 4 and 6 */
|
||||||
if (strcmp(arg, "#") == 0)
|
if (strcmp(arg, "#") == 0)
|
||||||
@@ -2790,7 +2792,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
flags &= ~SERV_FOR_NODOTS;
|
flags &= ~SERV_FOR_NODOTS;
|
||||||
|
|
||||||
/* address=/#/ matches the same as without domain */
|
/* address=/#/ matches the same as without domain */
|
||||||
if (option != 'S' && domain[0] == '#' && domain[1] == 0)
|
if (option == 'A' && domain[0] == '#' && domain[1] == 0)
|
||||||
domain[0] = 0;
|
domain[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -233,8 +233,6 @@ char *canonicalise(char *in, int *nomem)
|
|||||||
{
|
{
|
||||||
# ifdef HAVE_LIBIDN2
|
# ifdef HAVE_LIBIDN2
|
||||||
rc = idn2_to_ascii_lz(in, &ret, IDN2_NONTRANSITIONAL);
|
rc = idn2_to_ascii_lz(in, &ret, IDN2_NONTRANSITIONAL);
|
||||||
if (rc == IDN2_DISALLOWED)
|
|
||||||
rc = idn2_to_ascii_lz(in, &ret, IDN2_TRANSITIONAL);
|
|
||||||
# else
|
# else
|
||||||
rc = idna_to_ascii_lz(in, &ret, 0);
|
rc = idna_to_ascii_lz(in, &ret, 0);
|
||||||
# endif
|
# endif
|
||||||
|
|||||||
Reference in new issue
Block a user