Revert "Remove some test that was always true"
This reverts commit 6fc7cadb63
.
This commit is contained in:
parent
9200a8e98b
commit
f7474d3482
67
src/subs.c
67
src/subs.c
@ -459,7 +459,15 @@ int sub__add(struct mosquitto_db *db, struct mosquitto *context, const char *sub
|
||||
if(sub__topic_tokenise(sub, &tokens)) return 1;
|
||||
|
||||
HASH_FIND(hh, *root, UHPA_ACCESS_TOPIC(tokens), tokens->topic_len, subhier);
|
||||
assert(subhier);
|
||||
if(!subhier){
|
||||
subhier = sub__add_hier_entry(NULL, root, UHPA_ACCESS_TOPIC(tokens), tokens->topic_len);
|
||||
if(!subhier){
|
||||
sub__topic_tokens_free(tokens);
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: Out of memory.");
|
||||
return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
|
||||
}
|
||||
rc = sub__add_recurse(db, context, qos, subhier, tokens);
|
||||
|
||||
sub__topic_tokens_free(tokens);
|
||||
@ -481,8 +489,9 @@ int sub__remove(struct mosquitto_db *db, struct mosquitto *context, const char *
|
||||
if(sub__topic_tokenise(sub, &tokens)) return 1;
|
||||
|
||||
HASH_FIND(hh, root, UHPA_ACCESS_TOPIC(tokens), tokens->topic_len, subhier);
|
||||
assert(subhier);
|
||||
rc = sub__remove_recurse(db, context, subhier, tokens);
|
||||
if(subhier){
|
||||
rc = sub__remove_recurse(db, context, subhier, tokens);
|
||||
}
|
||||
|
||||
sub__topic_tokens_free(tokens);
|
||||
|
||||
@ -507,14 +516,15 @@ int sub__messages_queue(struct mosquitto_db *db, const char *source_id, const ch
|
||||
(*stored)->ref_count++;
|
||||
|
||||
HASH_FIND(hh, db->subs, UHPA_ACCESS_TOPIC(tokens), tokens->topic_len, subhier);
|
||||
assert(subhier);
|
||||
if(retain){
|
||||
/* We have a message that needs to be retained, so ensure that the subscription
|
||||
* tree for its topic exists.
|
||||
*/
|
||||
sub__add_recurse(db, NULL, 0, subhier, tokens);
|
||||
if(subhier){
|
||||
if(retain){
|
||||
/* We have a message that needs to be retained, so ensure that the subscription
|
||||
* tree for its topic exists.
|
||||
*/
|
||||
sub__add_recurse(db, NULL, 0, subhier, tokens);
|
||||
}
|
||||
sub__search(db, subhier, tokens, source_id, topic, qos, retain, *stored, true);
|
||||
}
|
||||
sub__search(db, subhier, tokens, source_id, topic, qos, retain, *stored, true);
|
||||
sub__topic_tokens_free(tokens);
|
||||
|
||||
/* Remove our reference and free if needed. */
|
||||
@ -611,23 +621,25 @@ void sub__tree_print(struct mosquitto__subhier *root, int level)
|
||||
struct mosquitto__subleaf *leaf;
|
||||
|
||||
HASH_ITER(hh, root, branch, branch_tmp){
|
||||
for(i=0; i<(level+2)*2; i++){
|
||||
printf(" ");
|
||||
}
|
||||
printf("%s", UHPA_ACCESS_TOPIC(branch));
|
||||
leaf = branch->subs;
|
||||
while(leaf){
|
||||
if(leaf->context){
|
||||
printf(" (%s, %d)", leaf->context->id, leaf->qos);
|
||||
}else{
|
||||
printf(" (%s, %d)", "", leaf->qos);
|
||||
if(level > -1){
|
||||
for(i=0; i<(level+2)*2; i++){
|
||||
printf(" ");
|
||||
}
|
||||
leaf = leaf->next;
|
||||
printf("%s", UHPA_ACCESS_TOPIC(branch));
|
||||
leaf = branch->subs;
|
||||
while(leaf){
|
||||
if(leaf->context){
|
||||
printf(" (%s, %d)", leaf->context->id, leaf->qos);
|
||||
}else{
|
||||
printf(" (%s, %d)", "", leaf->qos);
|
||||
}
|
||||
leaf = leaf->next;
|
||||
}
|
||||
if(branch->retained){
|
||||
printf(" (r)");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
if(branch->retained){
|
||||
printf(" (r)");
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
sub__tree_print(branch->children, level+1);
|
||||
}
|
||||
@ -715,9 +727,10 @@ int sub__retain_queue(struct mosquitto_db *db, struct mosquitto *context, const
|
||||
if(sub__topic_tokenise(sub, &tokens)) return 1;
|
||||
|
||||
HASH_FIND(hh, db->subs, UHPA_ACCESS_TOPIC(tokens), tokens->topic_len, subhier);
|
||||
assert(subhier);
|
||||
|
||||
retain__search(db, subhier, tokens, context, sub, sub_qos, 0);
|
||||
if(subhier){
|
||||
retain__search(db, subhier, tokens, context, sub, sub_qos, 0);
|
||||
}
|
||||
while(tokens){
|
||||
tail = tokens->next;
|
||||
UHPA_FREE_TOPIC(tokens);
|
||||
|
Loading…
Reference in New Issue
Block a user