Skip to content

Commit

Permalink
regex subscribe, qos2
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDvP committed Jan 9, 2024
1 parent 36f2a68 commit fcf9f83
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 19 deletions.
36 changes: 18 additions & 18 deletions lib/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,28 +42,28 @@ function convertID2topic(id, pattern, prefix, namespace, removePrefix) {
*/
function pattern2RegEx(pattern, adapter) {
pattern = convertTopic2id(pattern, true, adapter.config.prefix, adapter.namespace);
pattern = pattern.replace(/#/g, '*');
if (pattern === '#') {
return '.*';
}
if (pattern === '+') {
return '[^.]*';
}
pattern = pattern.replace(/\$/g, '\\$');
pattern = pattern.replace(/\^/g, '\\^');

if (pattern !== '*') {
if (pattern[0] === '*' && pattern[pattern.length - 1] !== '*') {
pattern += '$';
}
if (pattern[0] !== '*' && pattern[pattern.length - 1] === '*') {
pattern = `^${pattern}`;
}
if (pattern[0] === '+') {
pattern = `^[^.]*${pattern.substring(1)}`;
}
if (pattern[pattern.length - 1] === '+') {
pattern = `${pattern.substring(0, pattern.length - 1)}[^.]*$`;
}
} else {
return '.*';
if (pattern.length > 2 && (
(pattern[0] === '#' && pattern[1] !== '.') ||
(pattern[0] === '+' && pattern[1] !== '.') ||
(pattern[pattern.length - 1] === '#' && pattern[pattern.length - 2] !== '.') ||
(pattern[pattern.length - 1] === '+' && pattern[pattern.length - 2] !== '.'))) {
return '';
}
pattern = '^' + pattern + '$';
pattern = pattern.replace(/#/g, '*');
pattern = pattern.replace(/\./g, '\\.');
pattern = pattern.replace(/\\\.\*/g, '\\..*');
if (pattern[1] === '*') {
pattern = '^.' + pattern.substring(1);
}
pattern = pattern.replace(/\\\.\*/g, '(\\..*)?');
pattern = pattern.replace(/\+/g, '[^.]*');
return pattern;
}
Expand Down
2 changes: 1 addition & 1 deletion lib/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -1219,7 +1219,7 @@ function MQTTServer(adapter, states) {
message.dup = true;
clients[clientId].publish(message);
} else if (message.cmd === 'pubrel') {
clients[clientId].pubrec({
clients[clientId].pubrel({
messageId: message.messageId
});
}
Expand Down

0 comments on commit fcf9f83

Please sign in to comment.