You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ch...@apache.org on 2017/07/07 20:39:44 UTC
[07/14] qpid-dispatch git commit: DISPATCH-760: compare key names
using strcmp not iter_equal
DISPATCH-760: compare key names using strcmp not iter_equal
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/3b05873f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/3b05873f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/3b05873f
Branch: refs/heads/master
Commit: 3b05873fcd0f04fda3682e42b024be0ff60babca
Parents: 21014c6
Author: Chuck Rolke <cr...@redhat.com>
Authored: Sat Jul 1 15:51:00 2017 -0400
Committer: Chuck Rolke <cr...@redhat.com>
Committed: Fri Jul 7 10:38:38 2017 -0400
----------------------------------------------------------------------
include/qpid/dispatch/amqp.h | 1 +
src/amqp.c | 1 +
src/parse.c | 18 +++++++++++-------
3 files changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/3b05873f/include/qpid/dispatch/amqp.h
----------------------------------------------------------------------
diff --git a/include/qpid/dispatch/amqp.h b/include/qpid/dispatch/amqp.h
index beb083a..2de270c 100644
--- a/include/qpid/dispatch/amqp.h
+++ b/include/qpid/dispatch/amqp.h
@@ -112,6 +112,7 @@ extern const char * const QD_MA_TRACE; ///< Trace
extern const char * const QD_MA_TO; ///< To-Override
extern const char * const QD_MA_PHASE; ///< Phase for override address
extern const char * const QD_MA_CLASS; ///< Message-Class
+extern const int QD_MA_MAX_KEY; ///< strlen of longest key name
/// @}
/** @name Container Capabilities */
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/3b05873f/src/amqp.c
----------------------------------------------------------------------
diff --git a/src/amqp.c b/src/amqp.c
index d2f2cfe..673d7b0 100644
--- a/src/amqp.c
+++ b/src/amqp.c
@@ -28,6 +28,7 @@ const char * const QD_MA_TRACE = "x-opt-qd.trace";
const char * const QD_MA_TO = "x-opt-qd.to";
const char * const QD_MA_PHASE = "x-opt-qd.phase";
const char * const QD_MA_CLASS = "x-opt-qd.class";
+const int QD_MA_MAX_KEY = 16;
const char * const QD_CAPABILITY_ROUTER_CONTROL = "qd.router";
const char * const QD_CAPABILITY_ROUTER_DATA = "qd.router-data";
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/3b05873f/src/parse.c
----------------------------------------------------------------------
diff --git a/src/parse.c b/src/parse.c
index 2f04564..1adf189 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -215,7 +215,6 @@ const char *qd_parse_turbo(qd_iterator_t *iter,
// If there are this many in the list then this one cannot be a
// router annotation and must be a user annotation.
turbo = DEQ_HEAD(*annos);
- assert(turbo);
*user_entries += 1;
*user_bytes += sizeof(turbo->tag) + turbo->size + turbo->length_of_size;
DEQ_REMOVE_HEAD(*annos);
@@ -635,24 +634,29 @@ const char *qd_parse_annotations_v1(
qd_parsed_field_t *val_field = qd_parse(val_iter);
assert(val_field);
+ // Hoist the key name out of the buffers into a normal char array
+ char key_name[QD_MA_MAX_KEY + 1];
+ (void)qd_iterator_strncpy(iter, key_name, QD_MA_MAX_KEY);
+
// transfer ownership of the extracted value to the message
- if (qd_iterator_equal(iter, (unsigned char*) QD_MA_TRACE)) {
+ if (!strcmp(key_name, QD_MA_TRACE)) {
*ma_trace = val_field;
- } else if (qd_iterator_equal(iter, (unsigned char*) QD_MA_INGRESS)) {
+ } else if (!strcmp(key_name, QD_MA_INGRESS)) {
*ma_ingress = val_field;
- } else if (qd_iterator_equal(iter, (unsigned char*) QD_MA_TO)) {
+ } else if (!strcmp(key_name, QD_MA_TO)) {
*ma_to_override = val_field;
- } else if (qd_iterator_equal(iter, (unsigned char*) QD_MA_PHASE)) {
+ } else if (!strcmp(key_name, QD_MA_PHASE)) {
*ma_phase = val_field;
} else {
// TODO: this key had the QD_MA_PREFIX but it does not match
- // one of the actual fields.
+ // one of the actual fields.
+ qd_parse_free(val_field);
}
qd_iterator_free(key_iter);
qd_parse_free(key_field);
qd_iterator_free(val_iter);
- // val_field is handed over the message_private and is freed with the message
+ // val_field is usually handed over to message_private and is freed
anno = DEQ_NEXT(anno_val);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org