2
0
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:
Michal 'vorner' Vaner
2013-02-04 17:06:22 +01:00
parent f88b485191
commit 8adef6491e
3 changed files with 19 additions and 13 deletions

View File

@@ -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.

View File

@@ -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 = []

View File

@@ -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 = "*";
}
}