summaryrefslogtreecommitdiffstats
path: root/src/bin/dhcp6
diff options
context:
space:
mode:
authorTomek Mrugalski <tomasz@isc.org>2015-12-07 17:48:28 +0100
committerTomek Mrugalski <tomasz@isc.org>2015-12-07 17:48:28 +0100
commitb69ee2d4b13ab1069f4667b8d4b5e5b455e8adc4 (patch)
tree592ffec7e271bdda43a7c362ba0aae880914a9d1 /src/bin/dhcp6
parent[master] ChangeLog updated after 3569 merge. (diff)
downloadkea-b69ee2d4b13ab1069f4667b8d4b5e5b455e8adc4.tar.xz
kea-b69ee2d4b13ab1069f4667b8d4b5e5b455e8adc4.zip
[4206] Fix for empty DUID in v6
Diffstat (limited to '')
-rw-r--r--src/bin/dhcp6/dhcp6_messages.mes5
-rw-r--r--src/bin/dhcp6/dhcp6_srv.cc14
2 files changed, 19 insertions, 0 deletions
diff --git a/src/bin/dhcp6/dhcp6_messages.mes b/src/bin/dhcp6/dhcp6_messages.mes
index 8c5ca2cfb0..66c27edf2b 100644
--- a/src/bin/dhcp6/dhcp6_messages.mes
+++ b/src/bin/dhcp6/dhcp6_messages.mes
@@ -425,6 +425,11 @@ because packets of this type must be sent to multicast. The first argument
specifies the client and transaction identification information, the
second argument specifies packet type.
+% DHCP6_PACKET_PROCESS_EXCEPTION exception occurred during packet processing: %1
+This error message indicates that an exception was raised during packet processing
+that was not caught by other, more specific exception handlers. This packet will
+be dropped and the server will continue operation.
+
% DHCP6_PACKET_PROCESS_FAIL processing of %1 message received from %2 failed: %3
This is a general catch-all message indicating that the processing of the
specified packet type from the indicated address failed. The reason is given in the
diff --git a/src/bin/dhcp6/dhcp6_srv.cc b/src/bin/dhcp6/dhcp6_srv.cc
index 0aaf4fe6e1..2eaf423e2f 100644
--- a/src/bin/dhcp6/dhcp6_srv.cc
+++ b/src/bin/dhcp6/dhcp6_srv.cc
@@ -301,6 +301,8 @@ bool Dhcpv6Srv::run() {
Pkt6Ptr rsp;
try {
+
+ try {
uint32_t timeout = 1000;
LOG_DEBUG(packet6_logger, DBG_DHCP6_DETAIL, DHCP6_BUFFER_WAIT).arg(timeout);
query = receivePacket(timeout);
@@ -693,6 +695,18 @@ bool Dhcpv6Srv::run() {
.arg(e.what());
}
}
+
+ } catch (const std::exception& e) {
+ // General catch-all standard exceptions that are not caught by more
+ // specific catches.
+ LOG_ERROR(packet6_logger, DHCP6_PACKET_PROCESS_EXCEPTION)
+ .arg(e.what());
+ } catch (...) {
+ // General catch-all non-standard exception that are not caught
+ // by more specific catches.
+ LOG_ERROR(packet6_logger, DHCP6_PACKET_PROCESS_EXCEPTION)
+ .arg("an unknown exception not derived from std::exception");
+ }
}
return (true);