mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-05 08:25:16 +00:00
[1924] Use the constants in the process_command_send
This commit is contained in:
@@ -33,6 +33,7 @@ import threading
|
||||
import isc.config.ccsession
|
||||
from optparse import OptionParser, OptionValueError
|
||||
import isc.util.process
|
||||
from isc.util.common_defs import *
|
||||
import isc.log
|
||||
from isc.log_messages.msgq_messages import *
|
||||
|
||||
@@ -527,14 +528,14 @@ class MsgQ:
|
||||
self.sendmsg(sock, { "type" : "getlname" }, { "lname" : lname })
|
||||
|
||||
def process_command_send(self, sock, routing, data):
|
||||
group = routing["group"]
|
||||
instance = routing["instance"]
|
||||
to = routing["to"]
|
||||
group = routing[CC_HEADER_GROUP]
|
||||
instance = routing[CC_HEADER_INSTANCE]
|
||||
to = routing[CC_HEADER_TO]
|
||||
if group == None or instance == None:
|
||||
# FIXME: Should we log them instead?
|
||||
return # ignore invalid packets entirely
|
||||
|
||||
if to == "*":
|
||||
if to == CC_TO_WILDCARD:
|
||||
sockets = self.subs.find(group, instance)
|
||||
else:
|
||||
if to in self.lnames:
|
||||
@@ -551,7 +552,8 @@ class MsgQ:
|
||||
if sockets:
|
||||
for socket in sockets:
|
||||
self.send_prepared_msg(socket, msg)
|
||||
elif routing.get("wants_reply") and "reply" not in routing:
|
||||
elif routing.get(CC_HEADER_WANT_ANSWER) and \
|
||||
CC_HEADER_REPLY not in routing:
|
||||
# We have no recipients. But the sender insists on a reply
|
||||
# (and the message isn't a reply itself). We need to send
|
||||
# an error to satisfy the senders hurger for response, since
|
||||
@@ -567,9 +569,9 @@ class MsgQ:
|
||||
# want to mangle it for the caller, so we get a copy. A shallow
|
||||
# one should be enough, we modify the dict only.
|
||||
header = routing.copy()
|
||||
header["reply"] = routing["seq"]
|
||||
header["from"] = 'msgq' # Dummy lname not assigned to clients
|
||||
header["to"] = routing["from"]
|
||||
header[CC_HEADER_REPLY] = routing[CC_HEADER_SEQ]
|
||||
header[CC_HEADER_FROM] = "msgq" # Dummy lname not assigned to clients
|
||||
header[CC_HEADER_TO] = routing[CC_HEADER_FROM]
|
||||
# We keep the seq as it is. We don't need to track the message
|
||||
# and provided the sender always uses a new one, it won't know
|
||||
# we're cheating, since we won't send it two same either.
|
||||
|
@@ -192,11 +192,11 @@ class MsgQTest(unittest.TestCase):
|
||||
self.__msgq.process_command_send(sender, routing, data)
|
||||
self.assertEqual([], sent_messages)
|
||||
# It should act the same if we explicitly say we do not want replies.
|
||||
routing["wants_reply"] = False
|
||||
routing["want_answer"] = False
|
||||
self.__msgq.process_command_send(sender, routing, data)
|
||||
self.assertEqual([], sent_messages)
|
||||
# Ask for errors if it can't be delivered.
|
||||
routing["wants_reply"] = True
|
||||
routing["want_answer"] = True
|
||||
self.__msgq.process_command_send(sender, routing, data)
|
||||
self.assertEqual(1, len(sent_messages))
|
||||
self.assertEqual(1, sent_messages[0][0])
|
||||
@@ -207,14 +207,14 @@ class MsgQTest(unittest.TestCase):
|
||||
'seq': 42,
|
||||
'from': 'msgq',
|
||||
'to': 'sender',
|
||||
'wants_reply': True
|
||||
'want_answer': True
|
||||
}, {'result': [-1, "No such recipient"]}),
|
||||
self.parse_msg(sent_messages[0][1]))
|
||||
# the reply header too.
|
||||
sent_messages = []
|
||||
# If the message is a reply itself, we never generate the errors, even
|
||||
# if they can't be delivered. This is partly because the answer reuses
|
||||
# the old header (which would then inherit the wants_reply flag) and
|
||||
# the old header (which would then inherit the want_answer flag) and
|
||||
# partly we want to avoid loops of errors that can't be delivered.
|
||||
# If a reply can't be delivered, the sender can't do much anyway even
|
||||
# if notified.
|
||||
@@ -243,7 +243,7 @@ class MsgQTest(unittest.TestCase):
|
||||
'seq': 42,
|
||||
'from': 'msgq',
|
||||
'to': 'sender',
|
||||
'wants_reply': True
|
||||
'want_answer': True
|
||||
}, {'result': [-1, "No such recipient"]}),
|
||||
self.parse_msg(sent_messages[0][1]))
|
||||
sent_messages = []
|
||||
|
@@ -31,8 +31,12 @@ const char* CC_HEADER_GROUP = "group";
|
||||
const char* CC_HEADER_INSTANCE = "instance";
|
||||
const char* CC_HEADER_SEQ = "seq";
|
||||
const char* CC_HEADER_WANT_ANSWER = "want_answer";
|
||||
const char* CC_HEADER_REPLY = "reply";
|
||||
// The commands in the "type" header
|
||||
const char* CC_COMMAND_SEND = "send";
|
||||
// The wildcards of some headers
|
||||
const char* CC_TO_WILDCARD = "*";
|
||||
const char* CC_INSTANCE_WILDCARD = "*";
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user