Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
0503f4a6
Commit
0503f4a6
authored
Feb 18, 2011
by
Michal 'vorner' Vaner
Browse files
[trac575] Move the setting up of addresses
Taken out from resolver and put into the server_common library.
parent
71c4e3cb
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/bin/resolver/resolver.cc
View file @
0503f4a6
...
...
@@ -573,48 +573,9 @@ Resolver::getRootAddresses() const {
return
(
impl_
->
upstream_root_
);
}
namespace
{
void
setAddresses
(
DNSService
*
service
,
const
vector
<
AddressPair
>&
addresses
)
{
service
->
clearServers
();
BOOST_FOREACH
(
const
AddressPair
&
address
,
addresses
)
{
service
->
addServer
(
address
.
second
,
address
.
first
);
}
}
}
void
Resolver
::
setListenAddresses
(
const
vector
<
AddressPair
>&
addresses
)
{
try
{
dlog
(
"Setting listen addresses:"
);
BOOST_FOREACH
(
const
AddressPair
&
addr
,
addresses
)
{
dlog
(
" "
+
addr
.
first
+
":"
+
boost
::
lexical_cast
<
string
>
(
addr
.
second
));
}
setAddresses
(
dnss_
,
addresses
);
impl_
->
listen_
=
addresses
;
}
catch
(
const
exception
&
e
)
{
/*
* We couldn't set it. So return it back. If that fails as well,
* we have a problem.
*
* If that fails, bad luck, but we are useless anyway, so just die
* and let boss start us again.
*/
dlog
(
string
(
"Unable to set new address: "
)
+
e
.
what
(),
true
);
try
{
setAddresses
(
dnss_
,
impl_
->
listen_
);
}
catch
(
const
exception
&
e2
)
{
dlog
(
"Unable to recover from error;"
,
true
);
dlog
(
string
(
"Rollback failed with: "
)
+
e2
.
what
(),
true
);
abort
();
}
throw
e
;
// Let it fly a little bit further
}
installListenAddresses
(
addresses
,
impl_
->
listen_
,
*
dnss_
);
}
void
...
...
src/lib/server_common/Makefile.am
View file @
0503f4a6
...
...
@@ -21,5 +21,6 @@ libserver_common_la_SOURCES = portconfig.h portconfig.cc
libserver_common_la_LIBADD
=
$(top_builddir)
/src/lib/exceptions/libexceptions.la
libserver_common_la_LIBADD
+=
$(top_builddir)
/src/lib/asiolink/libasiolink.la
libserver_common_la_LIBADD
+=
$(top_builddir)
/src/lib/cc/libcc.la
libserver_common_la_LIBADD
+=
$(top_builddir)
/src/lib/log/liblog.la
CLEANFILES
=
*
.gcno
*
.gcda
src/lib/server_common/portconfig.cc
View file @
0503f4a6
...
...
@@ -15,10 +15,16 @@
#include "portconfig.h"
#include <asiolink/io_address.h>
#include <asiolink/dns_service.h>
#include <log/dummylog.h>
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
using
namespace
std
;
using
namespace
isc
::
data
;
using
namespace
asiolink
;
using
isc
::
log
::
dlog
;
namespace
isc
{
namespace
server_common
{
...
...
@@ -61,8 +67,52 @@ parseAddresses(isc::data::ConstElementPtr addresses,
return
(
result
);
}
namespace
{
void
setAddresses
(
DNSService
&
service
,
const
AddressList
&
addresses
)
{
service
.
clearServers
();
BOOST_FOREACH
(
const
AddressPair
&
address
,
addresses
)
{
service
.
addServer
(
address
.
second
,
address
.
first
);
}
}
}
void
installListenAddresses
(
const
AddressList
&
,
AddressList
&
,
asiolink
::
DNSService
&
)
{}
installListenAddresses
(
const
AddressList
&
newAddresses
,
AddressList
&
addressStore
,
asiolink
::
DNSService
&
service
)
{
try
{
dlog
(
"Setting listen addresses:"
);
BOOST_FOREACH
(
const
AddressPair
&
addr
,
newAddresses
)
{
dlog
(
" "
+
addr
.
first
+
":"
+
boost
::
lexical_cast
<
string
>
(
addr
.
second
));
}
setAddresses
(
service
,
newAddresses
);
addressStore
=
newAddresses
;
}
catch
(
const
exception
&
e
)
{
/*
* We couldn't set it. So return it back. If that fails as well,
* we have a problem.
*
* If that fails, bad luck, but we are useless anyway, so just die
* and let boss start us again.
*/
dlog
(
string
(
"Unable to set new address: "
)
+
e
.
what
(),
true
);
try
{
setAddresses
(
service
,
addressStore
);
}
catch
(
const
exception
&
e2
)
{
dlog
(
"Unable to recover from error;"
,
true
);
dlog
(
string
(
"Rollback failed with: "
)
+
e2
.
what
(),
true
);
abort
();
}
throw
e
;
// Let it fly a little bit further
}
}
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment