gitextract_o5h0yyj5/ ├── .editorconfig ├── .github/ │ ├── issue_template.md │ ├── labeler.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── build-variants.yml │ ├── cifuzz.yml │ ├── codeql-analysis.yml │ ├── coverage.yml │ ├── coverity-scan-develop.yml │ ├── coverity-scan-fixes.yml │ ├── delete-old-workflow-runs.yml │ ├── issue-labler.yml │ ├── lock.yml │ ├── macos.yml │ ├── mosquitto-cmake.yml │ ├── mosquitto-make-asan.yml │ ├── mosquitto-make.yml │ ├── windows-x86.yml │ └── windows.yml ├── .gitignore ├── .uncrustify.cfg ├── CITATION.cff ├── CMakeLists.txt ├── CONTRIBUTING.md ├── ChangeLog.txt ├── LICENSE.txt ├── Makefile ├── NOTICE.md ├── README-compiling.md ├── README-letsencrypt.md ├── README-tests.md ├── README-windows.txt ├── README.md ├── SECURITY.md ├── THANKS.txt ├── about.html ├── aclfile.example ├── apps/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── db_dump/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── db_dump.c │ │ ├── db_dump.h │ │ ├── json.c │ │ ├── print.c │ │ └── stubs.c │ ├── mosquitto_ctrl/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── broker.c │ │ ├── client.c │ │ ├── ctrl_shell.c │ │ ├── ctrl_shell.h │ │ ├── ctrl_shell_broker.c │ │ ├── ctrl_shell_client.c │ │ ├── ctrl_shell_completion_tree.c │ │ ├── ctrl_shell_dynsec.c │ │ ├── ctrl_shell_internal.h │ │ ├── ctrl_shell_io.c │ │ ├── ctrl_shell_post_connect.c │ │ ├── ctrl_shell_pre_connect.c │ │ ├── ctrl_shell_printf.c │ │ ├── dynsec.c │ │ ├── dynsec_client.c │ │ ├── dynsec_group.c │ │ ├── dynsec_role.c │ │ ├── example.c │ │ ├── mosquitto_ctrl.c │ │ ├── mosquitto_ctrl.h │ │ ├── options.c │ │ └── test/ │ │ └── Makefile │ ├── mosquitto_passwd/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── get_password.c │ │ ├── get_password.h │ │ └── mosquitto_passwd.c │ └── mosquitto_signal/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── mosquitto_signal.c │ ├── mosquitto_signal.h │ ├── signal_unix.c │ └── signal_windows.c ├── buildtest.py ├── client/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── args.txt │ ├── client_props.c │ ├── client_shared.c │ ├── client_shared.h │ ├── pub_client.c │ ├── pub_shared.c │ ├── pub_shared.h │ ├── pub_test_properties │ ├── rr_client.c │ ├── sub_client.c │ ├── sub_client_output.c │ ├── sub_client_output.h │ ├── sub_test_fixed_width │ └── sub_test_properties ├── cmake/ │ ├── FindCUnit.cmake │ ├── FindLineEditing.cmake │ ├── Findargon2.cmake │ └── FindcJSON.cmake ├── codecov.yml ├── common/ │ ├── json_help.c │ ├── json_help.h │ └── lib_load.h ├── config.h ├── config.mk ├── dashboard/ │ ├── README.md │ └── src/ │ ├── app/ │ │ ├── consts.js │ │ ├── dashboard.js │ │ ├── index.js │ │ ├── listeners.js │ │ └── sidebar.js │ ├── css/ │ │ └── styles.css │ ├── index.html │ ├── lib/ │ │ └── chart.umd.js │ ├── listeners.html │ ├── tailwind/ │ │ └── styles.css │ ├── tailwind.config.js │ └── utils/ │ ├── assert.js │ ├── queue.js │ └── utils.js ├── deps/ │ ├── picohttpparser/ │ │ ├── README.md │ │ ├── picohttpparser.c │ │ └── picohttpparser.h │ ├── uthash.h │ └── utlist.h ├── doc/ │ ├── historical/ │ │ ├── old-regex.txt │ │ └── topic-match.kds │ └── joss-paper/ │ ├── codemeta.json │ ├── paper.bib │ └── paper.md ├── docker/ │ ├── 1.6-openssl/ │ │ ├── Dockerfile │ │ ├── README.md │ │ └── docker-entrypoint.sh │ ├── 2.0-openssl/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-entrypoint.sh │ │ └── mosquitto-no-auth.conf │ ├── 2.1-alpine/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-entrypoint.sh │ │ └── mosquitto.conf │ ├── 2.1-ubuntu/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-entrypoint.sh │ │ └── mosquitto.conf │ ├── README.md │ ├── generic/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-entrypoint.sh │ │ └── mosquitto-no-auth.conf │ └── local/ │ ├── Dockerfile │ ├── README.md │ ├── docker-entrypoint.sh │ └── mosquitto.conf ├── edl-v10 ├── epl-v20 ├── examples/ │ ├── mysql_log/ │ │ ├── Makefile │ │ └── mysql_log.c │ ├── publish/ │ │ ├── Makefile │ │ ├── basic-1.c │ │ └── basic-websockets-1.c │ ├── subscribe/ │ │ └── basic-1.c │ ├── subscribe_simple/ │ │ ├── Makefile │ │ ├── callback.c │ │ ├── multiple.c │ │ └── single.c │ └── temperature_conversion/ │ ├── Makefile │ ├── main.cpp │ ├── readme.txt │ ├── temperature_conversion.cpp │ └── temperature_conversion.h ├── format.sh ├── fuzzing/ │ ├── Makefile │ ├── apps/ │ │ ├── Makefile │ │ ├── db_dump/ │ │ │ ├── Makefile │ │ │ ├── db_dump_fuzz_load.cpp │ │ │ ├── db_dump_fuzz_load_client_stats.cpp │ │ │ └── db_dump_fuzz_load_stats.cpp │ │ └── mosquitto_passwd/ │ │ ├── Makefile │ │ └── mosquitto_passwd_fuzz_load.cpp │ ├── broker/ │ │ ├── Makefile │ │ ├── broker_fuzz.cpp │ │ ├── broker_fuzz.h │ │ ├── broker_fuzz_acl_file.cpp │ │ ├── broker_fuzz_handle_auth.cpp │ │ ├── broker_fuzz_handle_connect.cpp │ │ ├── broker_fuzz_handle_publish.cpp │ │ ├── broker_fuzz_handle_subscribe.cpp │ │ ├── broker_fuzz_handle_unsubscribe.cpp │ │ ├── broker_fuzz_password_file.cpp │ │ ├── broker_fuzz_proxy_v1.cpp │ │ ├── broker_fuzz_proxy_v2.cpp │ │ ├── broker_fuzz_psk_file.cpp │ │ ├── broker_fuzz_queue_msg.cpp │ │ ├── broker_fuzz_read_handle.cpp │ │ ├── broker_fuzz_test_config.cpp │ │ ├── broker_fuzz_with_init.cpp │ │ ├── fuzz_packet_read_base.c │ │ └── fuzz_packet_read_base.h │ ├── config.mk │ ├── corpora/ │ │ ├── broker_acl_file.dict │ │ └── broker_conf.dict │ ├── generate_packet_corpora.py │ ├── libcommon/ │ │ ├── Makefile │ │ ├── libcommon_fuzz_property.cpp │ │ ├── libcommon_fuzz_property.proto │ │ ├── libcommon_fuzz_pub_topic_check2.cpp │ │ ├── libcommon_fuzz_sub_topic_check2.cpp │ │ ├── libcommon_fuzz_topic_matching.cpp │ │ ├── libcommon_fuzz_topic_matching.proto │ │ ├── libcommon_fuzz_topic_tokenise.cpp │ │ └── libcommon_fuzz_utf8.cpp │ ├── plugins/ │ │ ├── Makefile │ │ └── dynamic-security/ │ │ ├── Makefile │ │ └── dynsec_fuzz_load.cpp │ └── scripts/ │ ├── oss-fuzz-build.sh │ └── oss-fuzz-dependencies.sh ├── include/ │ ├── mosquitto/ │ │ ├── broker.h │ │ ├── broker_control.h │ │ ├── broker_plugin.h │ │ ├── defs.h │ │ ├── libcommon.h │ │ ├── libcommon_base64.h │ │ ├── libcommon_cjson.h │ │ ├── libcommon_file.h │ │ ├── libcommon_memory.h │ │ ├── libcommon_password.h │ │ ├── libcommon_properties.h │ │ ├── libcommon_random.h │ │ ├── libcommon_string.h │ │ ├── libcommon_time.h │ │ ├── libcommon_topic.h │ │ ├── libcommon_utf8.h │ │ ├── libmosquitto.h │ │ ├── libmosquitto_auth.h │ │ ├── libmosquitto_callbacks.h │ │ ├── libmosquitto_connect.h │ │ ├── libmosquitto_create_delete.h │ │ ├── libmosquitto_helpers.h │ │ ├── libmosquitto_loop.h │ │ ├── libmosquitto_message.h │ │ ├── libmosquitto_options.h │ │ ├── libmosquitto_publish.h │ │ ├── libmosquitto_socks.h │ │ ├── libmosquitto_subscribe.h │ │ ├── libmosquitto_tls.h │ │ ├── libmosquitto_unsubscribe.h │ │ ├── libmosquitto_will.h │ │ ├── libmosquittopp.h │ │ └── mqtt_protocol.h │ ├── mosquitto.h │ ├── mosquitto_broker.h │ ├── mosquitto_plugin.h │ ├── mosquittopp.h │ └── mqtt_protocol.h ├── installer/ │ ├── mosquitto.nsi │ └── mosquitto64.nsi ├── lib/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── actions_publish.c │ ├── actions_subscribe.c │ ├── actions_unsubscribe.c │ ├── alias_mosq.c │ ├── alias_mosq.h │ ├── callbacks.c │ ├── callbacks.h │ ├── connect.c │ ├── cpp/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ └── mosquittopp.cpp │ ├── extended_auth.c │ ├── handle_auth.c │ ├── handle_connack.c │ ├── handle_disconnect.c │ ├── handle_ping.c │ ├── handle_pubackcomp.c │ ├── handle_publish.c │ ├── handle_pubrec.c │ ├── handle_pubrel.c │ ├── handle_suback.c │ ├── handle_unsuback.c │ ├── helpers.c │ ├── http_client.c │ ├── http_client.h │ ├── libmosquitto.c │ ├── linker.version │ ├── logging_mosq.c │ ├── logging_mosq.h │ ├── loop.c │ ├── messages_mosq.c │ ├── messages_mosq.h │ ├── mosquitto_internal.h │ ├── net_mosq.c │ ├── net_mosq.h │ ├── net_mosq_ocsp.c │ ├── net_ws.c │ ├── options.c │ ├── packet_datatypes.c │ ├── packet_mosq.c │ ├── packet_mosq.h │ ├── property_mosq.c │ ├── property_mosq.h │ ├── pthread_compat.h │ ├── read_handle.c │ ├── read_handle.h │ ├── send_connect.c │ ├── send_disconnect.c │ ├── send_mosq.c │ ├── send_mosq.h │ ├── send_publish.c │ ├── send_subscribe.c │ ├── send_unsubscribe.c │ ├── socks_mosq.c │ ├── socks_mosq.h │ ├── srv_mosq.c │ ├── thread_mosq.c │ ├── tls_mosq.c │ ├── tls_mosq.h │ ├── util_mosq.c │ ├── util_mosq.h │ ├── will_mosq.c │ └── will_mosq.h ├── libcommon/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── base64_common.c │ ├── cjson_common.c │ ├── file_common.c │ ├── linker.version │ ├── memory_common.c │ ├── mqtt_common.c │ ├── password_common.c │ ├── property_common.c │ ├── property_common.h │ ├── random_common.c │ ├── strings_common.c │ ├── time_common.c │ ├── topic_common.c │ └── utf8_common.c ├── libmosquitto.pc.in ├── libmosquittopp.pc.in ├── make/ │ ├── broker.mk │ └── unit-test.mk ├── man/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── common/ │ │ ├── env-var-mosquitto-unsafe-allow-symlinks.xml │ │ ├── option-bind.xml │ │ ├── option-clean-session.xml │ │ ├── option-clientid-prefix.xml │ │ ├── option-clientid.xml │ │ ├── option-config-file.xml │ │ ├── option-debug.xml │ │ ├── option-format-no-eol.xml │ │ ├── option-format-pretty.xml │ │ ├── option-format-verbose.xml │ │ ├── option-format.xml │ │ ├── option-help.xml │ │ ├── option-hide-retain.xml │ │ ├── option-host.xml │ │ ├── option-keepalive.xml │ │ ├── option-no-tls.xml │ │ ├── option-nodelay.xml │ │ ├── option-password.xml │ │ ├── option-payload-file.xml │ │ ├── option-payload-message.xml │ │ ├── option-payload-null.xml │ │ ├── option-payload-stdin-file.xml │ │ ├── option-port.xml │ │ ├── option-property.xml │ │ ├── option-protocol-version.xml │ │ ├── option-proxy.xml │ │ ├── option-qos-incoming.xml │ │ ├── option-quiet.xml │ │ ├── option-retain-handling.xml │ │ ├── option-session-expiry-interval.xml │ │ ├── option-srv.xml │ │ ├── option-timeout.xml │ │ ├── option-tls-alpn.xml │ │ ├── option-tls-cafile.xml │ │ ├── option-tls-capath.xml │ │ ├── option-tls-cert.xml │ │ ├── option-tls-ciphers.xml │ │ ├── option-tls-engine-kpass-sha1.xml │ │ ├── option-tls-engine.xml │ │ ├── option-tls-insecure.xml │ │ ├── option-tls-key.xml │ │ ├── option-tls-keyform.xml │ │ ├── option-tls-keylog.xml │ │ ├── option-tls-psk-identity.xml │ │ ├── option-tls-psk.xml │ │ ├── option-tls-use-os-certs.xml │ │ ├── option-tls-version.xml │ │ ├── option-unix-socket.xml │ │ ├── option-url.xml │ │ ├── option-username.xml │ │ ├── option-websockets.xml │ │ ├── option-will-payload.xml │ │ ├── option-will-qos.xml │ │ ├── option-will-retain.xml │ │ ├── option-will-topic.xml │ │ ├── options-intro.xml │ │ ├── section-bugs.xml │ │ ├── section-encrypted-connections.xml │ │ ├── section-exit-status.xml │ │ ├── section-output-format.xml │ │ ├── section-properties-connect.xml │ │ ├── section-properties-disconnect.xml │ │ ├── section-properties-publish.xml │ │ ├── section-properties-subscribe.xml │ │ ├── section-properties-unsubscribe.xml │ │ ├── section-properties-will.xml │ │ ├── section-wills.xml │ │ ├── synopsis-tls-certificate-options.xml │ │ ├── synopsis-tls-psk-options.xml │ │ ├── synopsis-will.xml │ │ └── version-2.1.xml │ ├── html.xsl │ ├── libmosquitto.3.meta │ ├── libmosquitto.3.xml │ ├── manpage.xsl │ ├── mosquitto-tls.7.meta │ ├── mosquitto-tls.7.xml │ ├── mosquitto.7.meta │ ├── mosquitto.7.xml │ ├── mosquitto.8.meta │ ├── mosquitto.8.xml │ ├── mosquitto.conf.5.meta │ ├── mosquitto.conf.5.xml │ ├── mosquitto_ctrl.1.meta │ ├── mosquitto_ctrl.1.xml │ ├── mosquitto_ctrl_dynsec.1.meta │ ├── mosquitto_ctrl_dynsec.1.xml │ ├── mosquitto_ctrl_shell.1.meta │ ├── mosquitto_ctrl_shell.1.xml │ ├── mosquitto_passwd.1.meta │ ├── mosquitto_passwd.1.xml │ ├── mosquitto_pub.1.meta │ ├── mosquitto_pub.1.xml │ ├── mosquitto_rr.1.meta │ ├── mosquitto_rr.1.xml │ ├── mosquitto_signal.1.meta │ ├── mosquitto_signal.1.xml │ ├── mosquitto_sub.1.meta │ ├── mosquitto_sub.1.xml │ ├── mqtt.7.meta │ └── mqtt.7.xml ├── misc/ │ ├── currentcost/ │ │ ├── cc128_log_mysql.pl │ │ ├── cc128_parse.pl │ │ ├── cc128_read.pl │ │ ├── cc128_read.py │ │ └── gnome-panel/ │ │ ├── CurrentCostMQTT.py │ │ └── CurrentCostMQTT.server │ └── letsencrypt/ │ └── mosquitto-copy.sh ├── mosquitto.conf ├── plugins/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── README.md │ ├── acl-file/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── acl_check.c │ │ ├── acl_parse.c │ │ ├── plugin.c │ │ ├── test.conf │ │ └── test.sh │ ├── dynamic-security/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── README.md │ │ ├── acl.c │ │ ├── auth.c │ │ ├── clientlist.c │ │ ├── clients.c │ │ ├── config.c │ │ ├── config_init.c │ │ ├── control.c │ │ ├── default_acl.c │ │ ├── details.c │ │ ├── dynamic_security.h │ │ ├── grouplist.c │ │ ├── groups.c │ │ ├── kicklist.c │ │ ├── migrate_to_dynsec.py │ │ ├── plugin.c │ │ ├── rolelist.c │ │ ├── roles.c │ │ ├── test.conf │ │ ├── test.sh │ │ └── tick.c │ ├── examples/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── add-properties/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_add_properties.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── auth-by-env/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ └── mosquitto_auth_by_env.c │ │ ├── auth-by-ip/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_auth_by_ip.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── client-lifetime-stats/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_client_lifetime_stats.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── client-properties/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_client_properties.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── connection-state/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_connection_state.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── delayed-auth/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_delayed_auth.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── deny-protocol-version/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_deny_protocol_version.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── force-retain/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_force_retain.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── limit-subscription-qos/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_limit_subscription_qos.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── message-timestamp/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_message_timestamp.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── payload-ban/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_payload_ban.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── payload-modification/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_payload_modification.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── payload-size-stats/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_payload_size_stats.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── plugin-event-stats/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_plugin_event_stats.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── print-ip-on-publish/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_print_ip_on_publish.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── tick-interval/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_tick_interval.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── topic-hierarchy-flatten/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_topic_hierarchy_flatten.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── topic-jail/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_topic_jail.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ ├── topic-modification/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosquitto_topic_modification.c │ │ │ ├── test.conf │ │ │ └── test.sh │ │ └── wildcard-temp/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── mosquitto_wildcard_temp.c │ │ ├── test.conf │ │ └── test.sh │ ├── password-file/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── password_check.c │ │ ├── password_parse.c │ │ ├── plugin.c │ │ ├── test.conf │ │ ├── test.pwfile │ │ └── test.sh │ ├── persist-sqlite/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── base_msgs.c │ │ ├── client_msgs.c │ │ ├── clients.c │ │ ├── common.c │ │ ├── init.c │ │ ├── migrate_to_persist_sqlite.py │ │ ├── persist_sqlite.h │ │ ├── plugin.c │ │ ├── restore.c │ │ ├── retain_msgs.c │ │ ├── subscriptions.c │ │ ├── test.conf │ │ ├── test.sh │ │ ├── tick.c │ │ ├── util.h │ │ └── will.c │ ├── plugin.mk │ └── sparkplug-aware/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── README.md │ ├── on_message.c │ ├── plugin.c │ ├── plugin_global.h │ ├── test.conf │ └── test.sh ├── pskfile.example ├── pwfile.example ├── run_tests.py ├── security/ │ └── mosquitto.apparmor ├── service/ │ ├── monit/ │ │ └── mosquitto.monit │ ├── svscan/ │ │ └── run │ ├── systemd/ │ │ ├── README │ │ ├── mosquitto.service.notify │ │ └── mosquitto.service.simple │ └── upstart/ │ └── mosquitto.conf ├── set-version.sh ├── snap/ │ ├── local/ │ │ ├── default_config.conf │ │ └── launcher.sh │ └── snapcraft.yaml ├── src/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── acl_file.c │ ├── acl_file.h │ ├── bridge.c │ ├── bridge_topic.c │ ├── broker_control.c │ ├── conf.c │ ├── conf_includedir.c │ ├── context.c │ ├── control.c │ ├── control_common.c │ ├── database.c │ ├── handle_auth.c │ ├── handle_connack.c │ ├── handle_connect.c │ ├── handle_disconnect.c │ ├── handle_publish.c │ ├── handle_subscribe.c │ ├── handle_unsubscribe.c │ ├── http_api.c │ ├── http_serv.c │ ├── keepalive.c │ ├── linker-aix.syms │ ├── linker-macosx.syms │ ├── linker.syms │ ├── listeners.c │ ├── logging.c │ ├── loop.c │ ├── mosquitto.c │ ├── mosquitto_broker_internal.h │ ├── mux.c │ ├── mux.h │ ├── mux_epoll.c │ ├── mux_kqueue.c │ ├── mux_poll.c │ ├── net.c │ ├── password_file.c │ ├── password_file.h │ ├── persist.h │ ├── persist_read.c │ ├── persist_read_v234.c │ ├── persist_read_v5.c │ ├── persist_write.c │ ├── persist_write_v5.c │ ├── plugin_acl_check.c │ ├── plugin_basic_auth.c │ ├── plugin_callbacks.c │ ├── plugin_cleanup.c │ ├── plugin_client_offline.c │ ├── plugin_connect.c │ ├── plugin_disconnect.c │ ├── plugin_extended_auth.c │ ├── plugin_init.c │ ├── plugin_message.c │ ├── plugin_persist.c │ ├── plugin_psk_key.c │ ├── plugin_public.c │ ├── plugin_reload.c │ ├── plugin_subscribe.c │ ├── plugin_tick.c │ ├── plugin_unsubscribe.c │ ├── plugin_v2.c │ ├── plugin_v3.c │ ├── plugin_v4.c │ ├── plugin_v5.c │ ├── property_broker.c │ ├── proxy_v1.c │ ├── proxy_v2.c │ ├── psk_file.c │ ├── read_handle.c │ ├── retain.c │ ├── security_default.c │ ├── send_auth.c │ ├── send_connack.c │ ├── send_suback.c │ ├── send_unsuback.c │ ├── service.c │ ├── session_expiry.c │ ├── signals.c │ ├── subs.c │ ├── sys_tree.c │ ├── sys_tree.h │ ├── topic_tok.c │ ├── watchdog.c │ ├── websockets.c │ ├── will_delay.c │ └── xtreport.c ├── test/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── __init__.py │ ├── apps/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── TODO.md │ │ ├── ctrl/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── ctrl-args.py │ │ │ ├── ctrl-broker.py │ │ │ ├── ctrl-dynsec.py │ │ │ ├── ctrl_shell_broker_test.cpp │ │ │ ├── ctrl_shell_completion_test.cpp │ │ │ ├── ctrl_shell_dynsec_test.cpp │ │ │ ├── ctrl_shell_help_test.cpp │ │ │ ├── ctrl_shell_options_test.cpp │ │ │ ├── ctrl_shell_pre_connect_test.cpp │ │ │ ├── ctrl_shell_test.cpp │ │ │ ├── mosq_test_helper.py │ │ │ └── test.py │ │ ├── db_dump/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── data/ │ │ │ │ ├── bad-chunk.test-db │ │ │ │ ├── bad-dbid-size.test-db │ │ │ │ ├── bad-magic.test-db │ │ │ │ ├── short.test-db │ │ │ │ ├── v3-corrupt.test-db │ │ │ │ ├── v3-empty.test-db │ │ │ │ ├── v4-corrupt.test-db │ │ │ │ ├── v4-empty.test-db │ │ │ │ ├── v4-single-client.test-db │ │ │ │ ├── v4-single-cmsg.test-db │ │ │ │ ├── v4-single-retain.test-db │ │ │ │ ├── v4-single-sub.test-db │ │ │ │ ├── v5-corrupt.test-db │ │ │ │ ├── v5-empty.test-db │ │ │ │ ├── v6-corrupt-client.test-db │ │ │ │ ├── v6-corrupt-cmsg.test-db │ │ │ │ ├── v6-corrupt-retain.test-db │ │ │ │ ├── v6-corrupt-sub.test-db │ │ │ │ ├── v6-corrupt.test-db │ │ │ │ ├── v6-empty.test-db │ │ │ │ ├── v6-mqtt-v5-props.test-db │ │ │ │ ├── v6-single-all.test-db │ │ │ │ ├── v6-single-client.test-db │ │ │ │ ├── v6-single-cmsg.test-db │ │ │ │ ├── v6-single-retain.test-db │ │ │ │ └── v6-single-sub.test-db │ │ │ ├── db-dump-client-stats.py │ │ │ ├── db-dump-corrupt.py │ │ │ ├── db-dump-json-v6-mqtt-v5-props.py │ │ │ ├── db-dump-print-empty.py │ │ │ ├── db-dump-print-v6-all.py │ │ │ ├── db-dump-print-v6-mqtt-v5-props.py │ │ │ ├── db-dump-stats-current.py │ │ │ ├── db-dump-stats.py │ │ │ ├── mosq_test_helper.py │ │ │ └── test.py │ │ ├── mosq_test_helper.py │ │ ├── passwd/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── mosq_test_helper.py │ │ │ ├── passwd-args.py │ │ │ ├── passwd-changes.py │ │ │ ├── passwd-stdout.py │ │ │ └── test.py │ │ └── signal/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── mosq_test_helper.py │ │ ├── signal-args.py │ │ └── test.py │ ├── broker/ │ │ ├── 01-bad-initial-packets.py │ │ ├── 01-connect-575314.py │ │ ├── 01-connect-accept-protocol.py │ │ ├── 01-connect-allow-anonymous.py │ │ ├── 01-connect-auto-id.py │ │ ├── 01-connect-disconnect-v5.py │ │ ├── 01-connect-global-max-clients.py │ │ ├── 01-connect-global-max-connections.py │ │ ├── 01-connect-listener-allow-anonymous.py │ │ ├── 01-connect-max-connections.py │ │ ├── 01-connect-max-keepalive.py │ │ ├── 01-connect-take-over.py │ │ ├── 01-connect-uname-no-password-denied.pwfile │ │ ├── 01-connect-uname-no-password-denied.py │ │ ├── 01-connect-uname-or-anon.pwfile │ │ ├── 01-connect-uname-or-anon.py │ │ ├── 01-connect-uname-password-denied-no-will.py │ │ ├── 01-connect-uname-password-denied.pwfile │ │ ├── 01-connect-uname-password-denied.py │ │ ├── 01-connect-uname-password-success-no-tls.pwfile │ │ ├── 01-connect-uname-password-success-no-tls.py │ │ ├── 01-connect-unix-socket.py │ │ ├── 01-connect-windows-line-endings.py │ │ ├── 01-connect-zero-length-id.py │ │ ├── 01-plugin-connect-uname-password-denied.pwfile │ │ ├── 01-plugin-connect-uname-password-denied.py │ │ ├── 02-shared-nolocal.py │ │ ├── 02-shared-qos0-v5.py │ │ ├── 02-subhier-crash.py │ │ ├── 02-subpub-b2c-topic-alias.py │ │ ├── 02-subpub-qos0-long-topic.py │ │ ├── 02-subpub-qos0-oversize-payload.py │ │ ├── 02-subpub-qos0-queued-bytes.py │ │ ├── 02-subpub-qos0-retain-as-publish.py │ │ ├── 02-subpub-qos0-send-retain.py │ │ ├── 02-subpub-qos0-subscription-id.py │ │ ├── 02-subpub-qos0-topic-alias-unknown.py │ │ ├── 02-subpub-qos0-topic-alias.py │ │ ├── 02-subpub-qos1-message-expiry-retain.py │ │ ├── 02-subpub-qos1-message-expiry-will.py │ │ ├── 02-subpub-qos1-message-expiry.py │ │ ├── 02-subpub-qos1-nolocal.py │ │ ├── 02-subpub-qos1-oversize-payload.py │ │ ├── 02-subpub-qos1.py │ │ ├── 02-subpub-qos2-1322.py │ │ ├── 02-subpub-qos2-max-inflight-bytes.py │ │ ├── 02-subpub-qos2-pubrec-error.py │ │ ├── 02-subpub-qos2-receive-maximum-1.py │ │ ├── 02-subpub-qos2-receive-maximum-2.py │ │ ├── 02-subpub-qos2.py │ │ ├── 02-subpub-recover-subscriptions.py │ │ ├── 02-subscribe-dollar-v5.py │ │ ├── 02-subscribe-invalid-utf8.py │ │ ├── 02-subscribe-long-topic.py │ │ ├── 02-subscribe-persistence-flipflop.py │ │ ├── 03-pattern-matching.py │ │ ├── 03-publish-b2c-disconnect-qos1.py │ │ ├── 03-publish-b2c-disconnect-qos2.py │ │ ├── 03-publish-b2c-qos1-len.py │ │ ├── 03-publish-b2c-qos2-len.py │ │ ├── 03-publish-bad-flags.py │ │ ├── 03-publish-c2b-disconnect-qos2.py │ │ ├── 03-publish-c2b-qos2-len.py │ │ ├── 03-publish-dollar-v5.py │ │ ├── 03-publish-dollar.py │ │ ├── 03-publish-invalid-utf8.py │ │ ├── 03-publish-long-topic.py │ │ ├── 03-publish-qos1-max-inflight-expire.py │ │ ├── 03-publish-qos1-max-inflight.py │ │ ├── 03-publish-qos1-no-subscribers-v5.py │ │ ├── 03-publish-qos1-queued-bytes.conf │ │ ├── 03-publish-qos1-queued-bytes.py │ │ ├── 03-publish-qos1-retain-disabled.py │ │ ├── 03-publish-qos1.py │ │ ├── 03-publish-qos2-dup.py │ │ ├── 03-publish-qos2-max-inflight-exceeded.py │ │ ├── 03-publish-qos2-max-inflight.py │ │ ├── 03-publish-qos2-reuse-mid.py │ │ ├── 03-publish-qos2.py │ │ ├── 04-retain-check-source-persist-diff-port.py │ │ ├── 04-retain-check-source-persist.py │ │ ├── 04-retain-check-source.py │ │ ├── 04-retain-clear-multiple.py │ │ ├── 04-retain-qos0-clear.py │ │ ├── 04-retain-qos0-fresh.py │ │ ├── 04-retain-qos0-repeated.py │ │ ├── 04-retain-qos0.py │ │ ├── 04-retain-qos1-qos0.py │ │ ├── 04-retain-upgrade-outgoing-qos.py │ │ ├── 05-clean-session-qos1.py │ │ ├── 05-session-expiry-kick.py │ │ ├── 05-session-expiry-v5.py │ │ ├── 06-bridge-b2br-disconnect-qos1.py │ │ ├── 06-bridge-b2br-disconnect-qos2.py │ │ ├── 06-bridge-b2br-late-connection-retain.py │ │ ├── 06-bridge-b2br-late-connection.py │ │ ├── 06-bridge-b2br-remapping.py │ │ ├── 06-bridge-br2b-disconnect-qos1.py │ │ ├── 06-bridge-br2b-disconnect-qos2.py │ │ ├── 06-bridge-br2b-remapping.py │ │ ├── 06-bridge-clean-session-core.py │ │ ├── 06-bridge-clean-session-csF-lcsF.py │ │ ├── 06-bridge-clean-session-csF-lcsN.py │ │ ├── 06-bridge-clean-session-csF-lcsT.py │ │ ├── 06-bridge-clean-session-csT-lcsF.py │ │ ├── 06-bridge-clean-session-csT-lcsN.py │ │ ├── 06-bridge-clean-session-csT-lcsT.py │ │ ├── 06-bridge-config-reload.py │ │ ├── 06-bridge-fail-persist-resend-qos1.py │ │ ├── 06-bridge-fail-persist-resend-qos2.py │ │ ├── 06-bridge-no-local.py │ │ ├── 06-bridge-outgoing-retain.py │ │ ├── 06-bridge-per-listener-settings.py │ │ ├── 06-bridge-reconnect-local-out.py │ │ ├── 06-bridge-remap-receive-wildcard.py │ │ ├── 06-bridge-remote-shutdown.py │ │ ├── 07-will-control.py │ │ ├── 07-will-delay-invalid-573191.py │ │ ├── 07-will-delay-reconnect.py │ │ ├── 07-will-delay-recover.py │ │ ├── 07-will-delay-session-expiry-0.py │ │ ├── 07-will-delay-session-expiry.py │ │ ├── 07-will-delay-session-expiry2.py │ │ ├── 07-will-delay.py │ │ ├── 07-will-disconnect-with-will.py │ │ ├── 07-will-invalid-utf8.py │ │ ├── 07-will-no-flag.py │ │ ├── 07-will-null-topic.py │ │ ├── 07-will-null.py │ │ ├── 07-will-oversize-payload.py │ │ ├── 07-will-per-listener.py │ │ ├── 07-will-properties.py │ │ ├── 07-will-qos0.py │ │ ├── 07-will-reconnect-1273.py │ │ ├── 07-will-takeover.py │ │ ├── 08-ssl-bridge-helper.py │ │ ├── 08-ssl-bridge.py │ │ ├── 08-ssl-connect-cert-auth-crl.py │ │ ├── 08-ssl-connect-cert-auth-expired-allowed.py │ │ ├── 08-ssl-connect-cert-auth-expired.py │ │ ├── 08-ssl-connect-cert-auth-revoked.py │ │ ├── 08-ssl-connect-cert-auth-without.py │ │ ├── 08-ssl-connect-cert-auth.py │ │ ├── 08-ssl-connect-dhparam.py │ │ ├── 08-ssl-connect-identity.py │ │ ├── 08-ssl-connect-no-auth-wrong-ca.py │ │ ├── 08-ssl-connect-no-auth.py │ │ ├── 08-ssl-connect-no-identity.py │ │ ├── 08-ssl-hup-disconnect.py │ │ ├── 08-tls-psk-bridge.psk │ │ ├── 08-tls-psk-bridge.py │ │ ├── 08-tls-psk-pub.psk │ │ ├── 08-tls-psk-pub.py │ │ ├── 09-acl-access-variants.py │ │ ├── 09-acl-change.py │ │ ├── 09-acl-empty-file.py │ │ ├── 09-auth-bad-method.py │ │ ├── 09-extended-auth-change-username.py │ │ ├── 09-extended-auth-multistep-reauth.py │ │ ├── 09-extended-auth-multistep.py │ │ ├── 09-extended-auth-reauth.py │ │ ├── 09-extended-auth-single.py │ │ ├── 09-extended-auth-single2.py │ │ ├── 09-plugin-acl-access-variants.py │ │ ├── 09-plugin-acl-change.py │ │ ├── 09-plugin-auth-acl-pub-prop.py │ │ ├── 09-plugin-auth-acl-pub.py │ │ ├── 09-plugin-auth-acl-sub-denied.py │ │ ├── 09-plugin-auth-acl-sub.py │ │ ├── 09-plugin-auth-context-params.py │ │ ├── 09-plugin-auth-defer-unpwd-fail.py │ │ ├── 09-plugin-auth-defer-unpwd-success.py │ │ ├── 09-plugin-auth-msg-params.py │ │ ├── 09-plugin-auth-unpwd-fail.py │ │ ├── 09-plugin-auth-unpwd-success.py │ │ ├── 09-plugin-auth-v2-unpwd-fail.py │ │ ├── 09-plugin-auth-v2-unpwd-success.py │ │ ├── 09-plugin-auth-v3-unpwd-fail.py │ │ ├── 09-plugin-auth-v3-unpwd-success.py │ │ ├── 09-plugin-auth-v4-unpwd-fail.py │ │ ├── 09-plugin-auth-v4-unpwd-success.py │ │ ├── 09-plugin-auth-v5-unpwd-fail.py │ │ ├── 09-plugin-auth-v5-unpwd-success.py │ │ ├── 09-plugin-bad.py │ │ ├── 09-plugin-change-id.py │ │ ├── 09-plugin-delayed-auth.py │ │ ├── 09-plugin-evt-client-offline.py │ │ ├── 09-plugin-evt-message-in.py │ │ ├── 09-plugin-evt-message-out.py │ │ ├── 09-plugin-evt-psk-key.py │ │ ├── 09-plugin-evt-reload.py │ │ ├── 09-plugin-evt-subscribe.py │ │ ├── 09-plugin-evt-tick.py │ │ ├── 09-plugin-evt-unsubscribe.py │ │ ├── 09-plugin-load-acl.py │ │ ├── 09-plugin-load-basic-auth.py │ │ ├── 09-plugin-load-extended-auth.py │ │ ├── 09-plugin-publish.py │ │ ├── 09-plugin-unsupported.py │ │ ├── 09-pwfile-parse-invalid.py │ │ ├── 10-listener-mount-point.py │ │ ├── 11-message-expiry.py │ │ ├── 11-persistence-autosave-changes.py │ │ ├── 11-persistent-subscription-no-local.py │ │ ├── 11-persistent-subscription.py │ │ ├── 11-pub-props.py │ │ ├── 11-subscription-id.py │ │ ├── 12-prop-assigned-client-identifier.py │ │ ├── 12-prop-maximum-packet-size-broker.py │ │ ├── 12-prop-maximum-packet-size-publish-qos1.py │ │ ├── 12-prop-maximum-packet-size-publish-qos2.py │ │ ├── 12-prop-response-topic-correlation-data.py │ │ ├── 12-prop-response-topic.py │ │ ├── 12-prop-server-keepalive.py │ │ ├── 12-prop-subpub-content-type.py │ │ ├── 12-prop-subpub-payload-format.py │ │ ├── 13-websocket-bad-origin.py │ │ ├── 14-dynsec-acl.py │ │ ├── 14-dynsec-allow-wildcard.py │ │ ├── 14-dynsec-anon-group.py │ │ ├── 14-dynsec-auth.py │ │ ├── 14-dynsec-client-invalid.py │ │ ├── 14-dynsec-client.py │ │ ├── 14-dynsec-config-init-env.py │ │ ├── 14-dynsec-config-init-file.py │ │ ├── 14-dynsec-config-init-random.py │ │ ├── 14-dynsec-default-access.py │ │ ├── 14-dynsec-disable-client.py │ │ ├── 14-dynsec-group-invalid.py │ │ ├── 14-dynsec-group.py │ │ ├── 14-dynsec-modify-client.py │ │ ├── 14-dynsec-modify-group.py │ │ ├── 14-dynsec-modify-role.py │ │ ├── 14-dynsec-plugin-invalid.py │ │ ├── 14-dynsec-role-invalid.py │ │ ├── 14-dynsec-role.py │ │ ├── 15-persist-bridge-queue.py │ │ ├── 15-persist-client-drop-expired-messages.py │ │ ├── 15-persist-client-expired-session.py │ │ ├── 15-persist-client-msg-in-v3-1-1.py │ │ ├── 15-persist-client-msg-in-v5-0.py │ │ ├── 15-persist-client-msg-modify-acl.py │ │ ├── 15-persist-client-msg-out-clear-v3-1-1.py │ │ ├── 15-persist-client-msg-out-dup-v3-1-1.py │ │ ├── 15-persist-client-msg-out-queue-v3-1-1.py │ │ ├── 15-persist-client-msg-out-v3-1-1-db.py │ │ ├── 15-persist-client-msg-out-v3-1-1.py │ │ ├── 15-persist-client-msg-out-v5-0.py │ │ ├── 15-persist-client-v3-1-1.py │ │ ├── 15-persist-client-v5-0.py │ │ ├── 15-persist-client-will.py │ │ ├── 15-persist-migrate-db.py │ │ ├── 15-persist-publish-properties-v5-0.py │ │ ├── 15-persist-retain-clear.py │ │ ├── 15-persist-retain-v3-1-1.py │ │ ├── 15-persist-retain-v5-0.py │ │ ├── 15-persist-subscription-v3-1-1.py │ │ ├── 15-persist-subscription-v5-0.py │ │ ├── 16-cmd-args.py │ │ ├── 16-config-huge.py │ │ ├── 16-config-includedir.py │ │ ├── 16-config-missing.py │ │ ├── 16-config-parse-errors-tls-psk.py │ │ ├── 16-config-parse-errors-tls.py │ │ ├── 16-config-parse-errors-without-tls.py │ │ ├── 17-control-list-listeners.py │ │ ├── 17-control-list-plugins.py │ │ ├── 17-control-missing-endpoint.py │ │ ├── 20-sparkplug-aware.py │ │ ├── 20-sparkplug-compliance.py │ │ ├── 21-proxy-bad-version.py │ │ ├── 21-proxy-v1-bad.py │ │ ├── 21-proxy-v1-success.py │ │ ├── 21-proxy-v2-bad-config.py │ │ ├── 21-proxy-v2-bad-header.py │ │ ├── 21-proxy-v2-ipv4.py │ │ ├── 21-proxy-v2-ipv6.py │ │ ├── 21-proxy-v2-local.py │ │ ├── 21-proxy-v2-long-tlv.py │ │ ├── 21-proxy-v2-lost-connection.py │ │ ├── 21-proxy-v2-ssl-cipher.py │ │ ├── 21-proxy-v2-ssl-common-name-failure.py │ │ ├── 21-proxy-v2-ssl-common-name-success.py │ │ ├── 21-proxy-v2-ssl-require-cert-failure.py │ │ ├── 21-proxy-v2-ssl-require-cert-success.py │ │ ├── 21-proxy-v2-ssl-require-tls-failure.py │ │ ├── 21-proxy-v2-ssl-require-tls-success.py │ │ ├── 21-proxy-v2-unix.py │ │ ├── 21-proxy-v2-websockets.py │ │ ├── 22-http-api-acl.py │ │ ├── 22-http-api-api.py │ │ ├── 22-http-api-auth.pwfile │ │ ├── 22-http-api-auth.py │ │ ├── 22-http-api-file.py │ │ ├── 22-http-api-tls.py │ │ ├── 23-security-acl-file-reload.py │ │ ├── 23-security-password-file-reload.py │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── c/ │ │ │ ├── 08-tls-psk-bridge.c │ │ │ ├── 08-tls-psk-pub.c │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── auth_plugin_acl.c │ │ │ ├── auth_plugin_acl_change.c │ │ │ ├── auth_plugin_acl_sub_denied.c │ │ │ ├── auth_plugin_context_params.c │ │ │ ├── auth_plugin_delayed.c │ │ │ ├── auth_plugin_extended_multiple.c │ │ │ ├── auth_plugin_extended_reauth.c │ │ │ ├── auth_plugin_extended_single.c │ │ │ ├── auth_plugin_extended_single2.c │ │ │ ├── auth_plugin_id_change.c │ │ │ ├── auth_plugin_msg_params.c │ │ │ ├── auth_plugin_publish.c │ │ │ ├── auth_plugin_pwd.c │ │ │ ├── auth_plugin_v2.c │ │ │ ├── auth_plugin_v3.c │ │ │ ├── auth_plugin_v4.c │ │ │ ├── auth_plugin_v5.c │ │ │ ├── auth_plugin_v5_control.c │ │ │ ├── bad_v1.c │ │ │ ├── bad_v2_1.c │ │ │ ├── bad_v2_2.c │ │ │ ├── bad_v2_3.c │ │ │ ├── bad_v2_4.c │ │ │ ├── bad_v2_5.c │ │ │ ├── bad_v2_6.c │ │ │ ├── bad_v2_7.c │ │ │ ├── bad_v3_1.c │ │ │ ├── bad_v3_2.c │ │ │ ├── bad_v3_3.c │ │ │ ├── bad_v3_4.c │ │ │ ├── bad_v3_5.c │ │ │ ├── bad_v3_6.c │ │ │ ├── bad_v3_7.c │ │ │ ├── bad_v4_1.c │ │ │ ├── bad_v4_2.c │ │ │ ├── bad_v4_3.c │ │ │ ├── bad_v4_4.c │ │ │ ├── bad_v5_1.c │ │ │ ├── bad_v6.c │ │ │ ├── bad_vnone_1.c │ │ │ ├── kick_last_client.c │ │ │ ├── mosquitto_plugin_v2.h │ │ │ ├── plugin_control.c │ │ │ ├── plugin_evt_client_offline.c │ │ │ ├── plugin_evt_message_in.c │ │ │ ├── plugin_evt_message_out.c │ │ │ ├── plugin_evt_persist_client_update.c │ │ │ ├── plugin_evt_psk_key.c │ │ │ ├── plugin_evt_reload.c │ │ │ ├── plugin_evt_subscribe.c │ │ │ ├── plugin_evt_tick.c │ │ │ ├── plugin_evt_unsubscribe.c │ │ │ ├── plugin_load_acl.c │ │ │ └── plugin_load_extended_auth.c │ │ ├── data/ │ │ │ ├── AUTH.json │ │ │ ├── CONNACK.json │ │ │ ├── CONNECT.json │ │ │ ├── DISCONNECT.json │ │ │ ├── FLOW.json │ │ │ ├── FORBIDDEN.json │ │ │ ├── PINGREQ.json │ │ │ ├── PINGRESP.json │ │ │ ├── PUBACK.json │ │ │ ├── PUBCOMP.json │ │ │ ├── PUBLISH.json │ │ │ ├── PUBREC.json │ │ │ ├── PUBREL.json │ │ │ ├── REGRESSION.json │ │ │ ├── SUBACK.json │ │ │ ├── SUBSCRIBE.json │ │ │ ├── UNSUBACK.json │ │ │ ├── UNSUBSCRIBE.json │ │ │ └── ZZ-broker-check.json │ │ ├── dynamic-security-init.json │ │ ├── dynsec_helper.py │ │ ├── mosq_test_helper.py │ │ ├── msg_sequence_test.py │ │ ├── ntest.py │ │ ├── persist_module_helper.py │ │ ├── persist_sqlite.py │ │ ├── prop_subpub_helper.py │ │ ├── proxy_helper.py │ │ ├── readme.txt │ │ ├── test.py │ │ └── test.supp │ ├── client/ │ │ ├── 02-subscribe-argv-errors-tls-psk.py │ │ ├── 02-subscribe-argv-errors-tls.py │ │ ├── 02-subscribe-argv-errors-without-tls.py │ │ ├── 02-subscribe-env.py │ │ ├── 02-subscribe-filter-out.py │ │ ├── 02-subscribe-format-json-properties.py │ │ ├── 02-subscribe-format-json-qos0.py │ │ ├── 02-subscribe-format-json-qos1.py │ │ ├── 02-subscribe-format-json-retain.py │ │ ├── 02-subscribe-format.py │ │ ├── 02-subscribe-null.py │ │ ├── 02-subscribe-qos1-ws.py │ │ ├── 02-subscribe-qos1.py │ │ ├── 02-subscribe-retain-handling.py │ │ ├── 02-subscribe-verbose.py │ │ ├── 03-publish-argv-errors-tls-psk.py │ │ ├── 03-publish-argv-errors-tls.py │ │ ├── 03-publish-argv-errors-without-tls.py │ │ ├── 03-publish-env.py │ │ ├── 03-publish-file-empty.py │ │ ├── 03-publish-file.py │ │ ├── 03-publish-options-file.py │ │ ├── 03-publish-qos0-empty.py │ │ ├── 03-publish-qos1-properties.py │ │ ├── 03-publish-qos1-ws-large.py │ │ ├── 03-publish-qos1-ws.py │ │ ├── 03-publish-qos1.py │ │ ├── 03-publish-repeat.py │ │ ├── 03-publish-socks-auth-failed.py │ │ ├── 03-publish-socks-no-auth.py │ │ ├── 03-publish-socks.py │ │ ├── 03-publish-stdin-file.py │ │ ├── 03-publish-stdin-line.py │ │ ├── 03-publish-tls.py │ │ ├── 03-publish-url.py │ │ ├── 04-rr-argv-errors-tls-psk.py │ │ ├── 04-rr-argv-errors-tls.py │ │ ├── 04-rr-argv-errors-without-tls.py │ │ ├── 04-rr-env.py │ │ ├── 04-rr-qos1-ws.py │ │ ├── 04-rr-qos1.py │ │ ├── 04-rr-retain-handling.py │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── data/ │ │ │ └── .config/ │ │ │ ├── mosquitto_pub │ │ │ └── mosquitto_sub │ │ ├── mosq_test_helper.py │ │ ├── test-ws.sh │ │ ├── test.py │ │ ├── test.sh │ │ └── ws.conf │ ├── lib/ │ │ ├── 01-con-discon-success-v5.py │ │ ├── 01-con-discon-success.py │ │ ├── 01-con-discon-will-clear.py │ │ ├── 01-con-discon-will-v5.py │ │ ├── 01-con-discon-will.py │ │ ├── 01-extended-auth-continue.py │ │ ├── 01-extended-auth-failure.py │ │ ├── 01-keepalive-pingreq.py │ │ ├── 01-no-clean-session.py │ │ ├── 01-pre-connect-callback.py │ │ ├── 01-server-keepalive-pingreq.py │ │ ├── 01-unpwd-set.py │ │ ├── 01-will-set.py │ │ ├── 01-will-unpwd-set.py │ │ ├── 02-subscribe-helper-qos2.py │ │ ├── 02-subscribe-qos0.py │ │ ├── 02-subscribe-qos1.py │ │ ├── 02-subscribe-qos2.py │ │ ├── 02-unsubscribe-multiple-v5.py │ │ ├── 02-unsubscribe-v5.py │ │ ├── 02-unsubscribe.py │ │ ├── 03-publish-b2c-qos1-unexpected-puback.py │ │ ├── 03-publish-b2c-qos1.py │ │ ├── 03-publish-b2c-qos2-len.py │ │ ├── 03-publish-b2c-qos2-unexpected-pubcomp.py │ │ ├── 03-publish-b2c-qos2-unexpected-pubrel.py │ │ ├── 03-publish-b2c-qos2.py │ │ ├── 03-publish-c2b-qos1-disconnect.py │ │ ├── 03-publish-c2b-qos1-len.py │ │ ├── 03-publish-c2b-qos1-receive-maximum.py │ │ ├── 03-publish-c2b-qos2-disconnect.py │ │ ├── 03-publish-c2b-qos2-len.py │ │ ├── 03-publish-c2b-qos2-maximum-qos-0.py │ │ ├── 03-publish-c2b-qos2-maximum-qos-1.py │ │ ├── 03-publish-c2b-qos2-pubrec-error.py │ │ ├── 03-publish-c2b-qos2-receive-maximum-1.py │ │ ├── 03-publish-c2b-qos2-receive-maximum-2.py │ │ ├── 03-publish-c2b-qos2.py │ │ ├── 03-publish-loop.py │ │ ├── 03-publish-qos0-no-payload.py │ │ ├── 03-publish-qos0.py │ │ ├── 03-request-response-correlation.py │ │ ├── 03-request-response.py │ │ ├── 04-retain-qos0.py │ │ ├── 08-ssl-bad-cacert.py │ │ ├── 08-ssl-connect-cert-auth-enc.py │ │ ├── 08-ssl-connect-cert-auth.py │ │ ├── 08-ssl-connect-no-auth.py │ │ ├── 08-ssl-connect-san.py │ │ ├── 08-ssl-fake-cacert.py │ │ ├── 09-util-topic-tokenise.py │ │ ├── 11-prop-oversize-packet.py │ │ ├── 11-prop-recv-qos0.py │ │ ├── 11-prop-recv-qos1.py │ │ ├── 11-prop-recv-qos2.py │ │ ├── 11-prop-send-content-type.py │ │ ├── 11-prop-send-payload-format.py │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── c/ │ │ │ ├── 01-con-discon-success-v5.c │ │ │ ├── 01-con-discon-success.c │ │ │ ├── 01-con-discon-will-clear.c │ │ │ ├── 01-con-discon-will-v5.c │ │ │ ├── 01-con-discon-will.c │ │ │ ├── 01-extended-auth-continue.c │ │ │ ├── 01-extended-auth-failure.c │ │ │ ├── 01-keepalive-pingreq.c │ │ │ ├── 01-no-clean-session.c │ │ │ ├── 01-pre-connect-callback.c │ │ │ ├── 01-server-keepalive-pingreq.c │ │ │ ├── 01-unpwd-set.c │ │ │ ├── 01-will-set.c │ │ │ ├── 01-will-unpwd-set.c │ │ │ ├── 02-subscribe-helper-callback-qos2.c │ │ │ ├── 02-subscribe-helper-simple-qos2.c │ │ │ ├── 02-subscribe-qos0.c │ │ │ ├── 02-subscribe-qos1-async1.c │ │ │ ├── 02-subscribe-qos1-async2.c │ │ │ ├── 02-subscribe-qos1.c │ │ │ ├── 02-subscribe-qos2.c │ │ │ ├── 02-unsubscribe-multiple-v5.c │ │ │ ├── 02-unsubscribe-v5.c │ │ │ ├── 02-unsubscribe.c │ │ │ ├── 02-unsubscribe2-v5.c │ │ │ ├── 03-publish-b2c-qos1-unexpected-puback.c │ │ │ ├── 03-publish-b2c-qos1.c │ │ │ ├── 03-publish-b2c-qos2-len.c │ │ │ ├── 03-publish-b2c-qos2-unexpected-pubcomp.c │ │ │ ├── 03-publish-b2c-qos2-unexpected-pubrel.c │ │ │ ├── 03-publish-b2c-qos2.c │ │ │ ├── 03-publish-c2b-qos1-disconnect.c │ │ │ ├── 03-publish-c2b-qos1-len.c │ │ │ ├── 03-publish-c2b-qos1-receive-maximum.c │ │ │ ├── 03-publish-c2b-qos2-disconnect.c │ │ │ ├── 03-publish-c2b-qos2-len.c │ │ │ ├── 03-publish-c2b-qos2-maximum-qos-0.c │ │ │ ├── 03-publish-c2b-qos2-maximum-qos-1.c │ │ │ ├── 03-publish-c2b-qos2-pubrec-error.c │ │ │ ├── 03-publish-c2b-qos2-receive-maximum.c │ │ │ ├── 03-publish-c2b-qos2.c │ │ │ ├── 03-publish-loop-forever.c │ │ │ ├── 03-publish-loop-manual.c │ │ │ ├── 03-publish-loop-start.c │ │ │ ├── 03-publish-loop.c │ │ │ ├── 03-publish-qos0-no-payload.c │ │ │ ├── 03-publish-qos0.c │ │ │ ├── 03-request-response-1.c │ │ │ ├── 03-request-response-2.c │ │ │ ├── 03-request-response-correlation-1.c │ │ │ ├── 04-retain-qos0.c │ │ │ ├── 08-ssl-bad-cacert.c │ │ │ ├── 08-ssl-connect-cert-auth-custom-ssl-ctx-default.c │ │ │ ├── 08-ssl-connect-cert-auth-custom-ssl-ctx.c │ │ │ ├── 08-ssl-connect-cert-auth-enc.c │ │ │ ├── 08-ssl-connect-cert-auth.c │ │ │ ├── 08-ssl-connect-no-auth.c │ │ │ ├── 08-ssl-connect-san.c │ │ │ ├── 08-ssl-fake-cacert.c │ │ │ ├── 09-util-topic-tokenise.c │ │ │ ├── 11-prop-oversize-packet.c │ │ │ ├── 11-prop-recv.c │ │ │ ├── 11-prop-send-content-type.c │ │ │ ├── 11-prop-send-payload-format.c │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ └── fuzzish.c │ │ ├── cpp/ │ │ │ ├── 01-con-discon-success-v5.cpp │ │ │ ├── 01-con-discon-success.cpp │ │ │ ├── 01-con-discon-will-clear.cpp │ │ │ ├── 01-con-discon-will-v5.cpp │ │ │ ├── 01-con-discon-will.cpp │ │ │ ├── 01-extended-auth-continue.cpp │ │ │ ├── 01-extended-auth-failure.cpp │ │ │ ├── 01-keepalive-pingreq.cpp │ │ │ ├── 01-no-clean-session.cpp │ │ │ ├── 01-pre-connect-callback.cpp │ │ │ ├── 01-server-keepalive-pingreq.cpp │ │ │ ├── 01-unpwd-set.cpp │ │ │ ├── 01-will-set.cpp │ │ │ ├── 01-will-unpwd-set.cpp │ │ │ ├── 02-subscribe-helper-callback-qos2.cpp │ │ │ ├── 02-subscribe-helper-simple-qos2.cpp │ │ │ ├── 02-subscribe-qos0.cpp │ │ │ ├── 02-subscribe-qos1-async1.cpp │ │ │ ├── 02-subscribe-qos1-async2.cpp │ │ │ ├── 02-subscribe-qos1.cpp │ │ │ ├── 02-subscribe-qos2.cpp │ │ │ ├── 02-unsubscribe-v5.cpp │ │ │ ├── 02-unsubscribe.cpp │ │ │ ├── 03-publish-b2c-qos1-unexpected-puback.cpp │ │ │ ├── 03-publish-b2c-qos1.cpp │ │ │ ├── 03-publish-b2c-qos2-len.cpp │ │ │ ├── 03-publish-b2c-qos2-unexpected-pubcomp.cpp │ │ │ ├── 03-publish-b2c-qos2-unexpected-pubrel.cpp │ │ │ ├── 03-publish-b2c-qos2.cpp │ │ │ ├── 03-publish-c2b-qos1-disconnect.cpp │ │ │ ├── 03-publish-c2b-qos1-len.cpp │ │ │ ├── 03-publish-c2b-qos1-receive-maximum.cpp │ │ │ ├── 03-publish-c2b-qos2-disconnect.cpp │ │ │ ├── 03-publish-c2b-qos2-len.cpp │ │ │ ├── 03-publish-c2b-qos2-maximum-qos-0.cpp │ │ │ ├── 03-publish-c2b-qos2-maximum-qos-1.cpp │ │ │ ├── 03-publish-c2b-qos2-pubrec-error.cpp │ │ │ ├── 03-publish-c2b-qos2-receive-maximum.cpp │ │ │ ├── 03-publish-c2b-qos2.cpp │ │ │ ├── 03-publish-loop-forever.cpp │ │ │ ├── 03-publish-loop-manual.cpp │ │ │ ├── 03-publish-loop-start.cpp │ │ │ ├── 03-publish-loop.cpp │ │ │ ├── 03-publish-qos0-no-payload.cpp │ │ │ ├── 03-publish-qos0.cpp │ │ │ ├── 03-request-response-1.cpp │ │ │ ├── 03-request-response-2.cpp │ │ │ ├── 03-request-response-correlation-1.cpp │ │ │ ├── 04-retain-qos0.cpp │ │ │ ├── 08-ssl-bad-cacert.cpp │ │ │ ├── 08-ssl-connect-cert-auth-custom-ssl-ctx-default.cpp │ │ │ ├── 08-ssl-connect-cert-auth-custom-ssl-ctx.cpp │ │ │ ├── 08-ssl-connect-cert-auth-enc.cpp │ │ │ ├── 08-ssl-connect-cert-auth.cpp │ │ │ ├── 08-ssl-connect-no-auth.cpp │ │ │ ├── 08-ssl-connect-san.cpp │ │ │ ├── 08-ssl-fake-cacert.cpp │ │ │ ├── 09-util-topic-tokenise.cpp │ │ │ ├── 11-prop-oversize-packet.cpp │ │ │ ├── 11-prop-recv.cpp │ │ │ ├── 11-prop-send-content-type.cpp │ │ │ ├── 11-prop-send-payload-format.cpp │ │ │ ├── CMakeLists.txt │ │ │ └── Makefile │ │ ├── data/ │ │ │ ├── AUTH.json │ │ │ ├── CONNACK.json │ │ │ ├── CONNECT.json │ │ │ ├── DISCONNECT.json │ │ │ ├── FORBIDDEN.json │ │ │ ├── PINGREQ.json │ │ │ ├── PINGRESP.json │ │ │ ├── PUBACK.json │ │ │ ├── PUBLISH.json │ │ │ ├── PUBREC.json │ │ │ ├── SUBSCRIBE.json │ │ │ ├── UNSUBACK.json │ │ │ └── UNSUBSCRIBE.json │ │ ├── mosq_test_helper.py │ │ ├── msg_sequence_test.py │ │ └── test.py │ ├── mock/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── apps/ │ │ │ ├── CMakeLists.txt │ │ │ └── mosquitto_ctrl/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── ctrl_shell_mock.cpp │ │ │ └── ctrl_shell_mock.hpp │ │ ├── c_function_mock.hpp │ │ ├── editline_mock.cpp │ │ ├── editline_mock.hpp │ │ ├── lib/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── actions_publish_mock.cpp │ │ │ ├── actions_subscribe_mock.cpp │ │ │ ├── actions_unsubscribe_mock.cpp │ │ │ ├── callbacks_mock.cpp │ │ │ ├── connect_mock.cpp │ │ │ ├── extended_auth_mock.cpp │ │ │ ├── helpers_mock.cpp │ │ │ ├── libmosquitto_mock.cpp │ │ │ ├── libmosquitto_mock.hpp │ │ │ ├── loop_mock.cpp │ │ │ ├── messages_mosq_mock.cpp │ │ │ ├── net_mosq_mock.cpp │ │ │ ├── options_mock.cpp │ │ │ ├── socks_mosq_mock.cpp │ │ │ ├── srv_mosq_mock.cpp │ │ │ └── thread_mosq_mock.cpp │ │ ├── libcommon/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── base64_common_mock.cpp │ │ │ ├── cjson_common.cpp │ │ │ ├── file_common_mock.cpp │ │ │ ├── libmosquitto_common_mock.cpp │ │ │ ├── libmosquitto_common_mock.hpp │ │ │ ├── memory_common_mock.cpp │ │ │ ├── mqtt_common_mock.cpp │ │ │ ├── password_common_mock.cpp │ │ │ ├── property_common_mock.cpp │ │ │ ├── random_common_mock.cpp │ │ │ ├── strings_common_mock.cpp │ │ │ ├── time_common_mock.cpp │ │ │ ├── topic_common_mock.cpp │ │ │ └── utf8_common_mock.cpp │ │ ├── pthread_mock.cpp │ │ └── pthread_mock.hpp │ ├── mosq_test.py │ ├── mqtt5_opts.py │ ├── mqtt5_props.py │ ├── mqtt5_rc.py │ ├── old/ │ │ ├── Makefile │ │ ├── msgsps_common.h │ │ ├── msgsps_pub.c │ │ └── msgsps_sub.c │ ├── path_helper.h │ ├── ptest.py │ ├── random/ │ │ ├── Makefile │ │ ├── auth_plugin.c │ │ ├── pwfile │ │ ├── random.conf │ │ ├── random_client.py │ │ └── test.py │ ├── ssl/ │ │ ├── all-ca.crt │ │ ├── client-encrypted.crt │ │ ├── client-encrypted.key │ │ ├── client-expired.crt │ │ ├── client-expired.key │ │ ├── client-revoked.crt │ │ ├── client-revoked.key │ │ ├── client.crt │ │ ├── client.key │ │ ├── crl-empty.pem │ │ ├── crl.pem │ │ ├── dhparam │ │ ├── gen.sh │ │ ├── openssl.cnf │ │ ├── readme.txt │ │ ├── server-expired.crt │ │ ├── server-expired.key │ │ ├── server-san.crt │ │ ├── server-san.key │ │ ├── server.crt │ │ ├── server.key │ │ ├── test-alt-ca.crt │ │ ├── test-alt-ca.key │ │ ├── test-bad-root-ca.crt │ │ ├── test-bad-root-ca.key │ │ ├── test-fake-root-ca.crt │ │ ├── test-fake-root-ca.key │ │ ├── test-root-ca.crt │ │ ├── test-root-ca.key │ │ ├── test-signing-ca.crt │ │ └── test-signing-ca.key │ └── unit/ │ ├── CMakeLists.txt │ ├── Makefile │ ├── broker/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── bridge_topic_test.c │ │ ├── files/ │ │ │ ├── persist_read/ │ │ │ │ ├── corrupt-header-long.test-db │ │ │ │ ├── corrupt-header-short.test-db │ │ │ │ ├── empty.test-db │ │ │ │ ├── unsupported-version.test-db │ │ │ │ ├── v3-bad-chunk.test-db │ │ │ │ ├── v3-cfg-bad-dbid.test-db │ │ │ │ ├── v3-cfg-truncated.test-db │ │ │ │ ├── v3-cfg.test-db │ │ │ │ ├── v3-client-message.test-db │ │ │ │ ├── v3-client.test-db │ │ │ │ ├── v3-message-store.test-db │ │ │ │ ├── v3-retain.test-db │ │ │ │ ├── v3-sub.test-db │ │ │ │ ├── v4-cfg.test-db │ │ │ │ ├── v4-message-store.test-db │ │ │ │ ├── v5-bad-chunk.test-db │ │ │ │ ├── v5-cfg-truncated.test-db │ │ │ │ ├── v5-client.test-db │ │ │ │ ├── v6-base-msg-topic-0.test-db │ │ │ │ ├── v6-cfg.test-db │ │ │ │ ├── v6-client-message-props.test-db │ │ │ │ ├── v6-client-message.test-db │ │ │ │ ├── v6-client.test-db │ │ │ │ ├── v6-message-store-props.test-db │ │ │ │ ├── v6-message-store.test-db │ │ │ │ ├── v6-retain.test-db │ │ │ │ └── v6-sub.test-db │ │ │ └── persist_write/ │ │ │ ├── empty.test-db │ │ │ ├── v4-full.test-db │ │ │ └── v6-message-store-no-ref.test-db │ │ ├── keepalive_stubs.c │ │ ├── keepalive_test.c │ │ ├── persist_read_stubs.c │ │ ├── persist_read_test.c │ │ ├── persist_write_stubs.c │ │ ├── persist_write_test.c │ │ ├── stubs.c │ │ ├── subs_stubs.c │ │ └── subs_test.c │ ├── lib/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── datatype_read.c │ │ ├── datatype_write.c │ │ ├── property_read.c │ │ ├── property_user_read.c │ │ ├── property_write.c │ │ ├── publish_test.c │ │ ├── stubs.c │ │ └── test.c │ ├── libcommon/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ ├── base64_test.c │ │ ├── file_test.c │ │ ├── property_add.c │ │ ├── property_value.c │ │ ├── strings_test.c │ │ ├── test.c │ │ ├── topic_test.c │ │ ├── trim_test.c │ │ └── utf8.c │ ├── tls_stubs.c │ └── tls_test.c ├── vcpkg.json └── www/ ├── README.md ├── conf.py ├── files/ │ ├── manifest.json │ └── stickers/ │ └── index.html ├── pages/ │ ├── documentation/ │ │ ├── authentication-methods.md │ │ ├── dynamic-security.md │ │ ├── listeners/ │ │ │ ├── haproxy.md │ │ │ └── per_listener_settings.md │ │ ├── migrating-to-2-0.md │ │ ├── persistence/ │ │ │ └── sqlite.md │ │ ├── plugins/ │ │ │ ├── acl-file.md │ │ │ ├── password-file.md │ │ │ └── sparkplug-aware.md │ │ └── using-the-snap.md │ ├── documentation.md │ ├── download.md │ ├── index.html │ ├── roadmap.md │ └── security.md ├── plugins/ │ ├── __init__.py │ └── docbookmanpage/ │ ├── docbookmanpage.plugin │ ├── docbookmanpage.py │ └── html.xsl ├── posts/ │ ├── 2009/ │ │ └── 12/ │ │ ├── version-0-2-released.md │ │ └── version-0-3-released.md │ ├── 2010/ │ │ ├── 01/ │ │ │ ├── mailing-list-irc.md │ │ │ ├── version-0-4-1-released.md │ │ │ └── version-0-4-released.md │ │ ├── 02/ │ │ │ └── version-0-4-2-released.md │ │ ├── 03/ │ │ │ ├── google-powermeter.md │ │ │ ├── upgrading-to-0-5-1.md │ │ │ ├── version-0-5-1-released.md │ │ │ ├── version-0-5-2-released.md │ │ │ ├── version-0-5-3-released.md │ │ │ └── version-0-5-4-released.md │ │ ├── 04/ │ │ │ ├── help-wanted-rpm-packaging.md │ │ │ ├── mind-control-mqtt.md │ │ │ └── oggcamp.md │ │ ├── 05/ │ │ │ ├── fedora-packages-available.md │ │ │ ├── gentoo-ebuilds-available.md │ │ │ ├── mosquitto-org.md │ │ │ ├── mqtt-push-on-android.md │ │ │ ├── mqtt-wiki.md │ │ │ ├── version-0-6-1-released.md │ │ │ └── version-0-6-released.md │ │ ├── 06/ │ │ │ ├── automation-has-the-oven-warmed-up-yet.md │ │ │ ├── google-powermeter-step-by-step.attachments.json │ │ │ ├── google-powermeter-step-by-step.md │ │ │ ├── mosquitto-0-7rc1.md │ │ │ └── version-0-7-released.md │ │ ├── 07/ │ │ │ ├── mosquitto-on-opensuse-11-3.md │ │ │ └── mqtt-client-library.md │ │ ├── 08/ │ │ │ ├── compiling-mosquitto-on-mac-os-x.md │ │ │ ├── mosquitto-running-on-mac-os-x.md │ │ │ ├── mqtt-v3-1.md │ │ │ ├── version-0-8-1-released.md │ │ │ ├── version-0-8-2.md │ │ │ └── version-0-8-released.md │ │ ├── 09/ │ │ │ ├── debian-packages.md │ │ │ └── mqtt-with-php.md │ │ ├── 10/ │ │ │ ├── man-page-translations.md │ │ │ ├── one-year-old.md │ │ │ └── version-0-8-3-released.md │ │ ├── 11/ │ │ │ ├── distro-packaging.md │ │ │ ├── mosquitto-0-9test2.md │ │ │ └── version-0-9-released.md │ │ └── 12/ │ │ └── version-0-9-1-released.md │ ├── 2011/ │ │ ├── 01/ │ │ │ ├── mosquitto-for-slackware.md │ │ │ └── mqtt-news.md │ │ ├── 02/ │ │ │ ├── lightweight-messaging-and-linux.md │ │ │ ├── mosquitto-on-maemo.md │ │ │ ├── mqtt-on-android.md │ │ │ └── version-0-9-2-released.md │ │ ├── 03/ │ │ │ ├── api-documentation.md │ │ │ ├── mosquitto-in-mac-homebrew.md │ │ │ └── version-0-9-3-released.md │ │ ├── 04/ │ │ │ └── version-0-10-released.md │ │ ├── 05/ │ │ │ ├── mqtt-ontology.md │ │ │ └── version-0-10-1-released.md │ │ ├── 06/ │ │ │ ├── nanode-a-cheap-networked-arduino-clone.md │ │ │ ├── version-0-10-2-released.md │ │ │ ├── version-0-11-1-released.md │ │ │ ├── version-0-11-2-released.md │ │ │ └── version-0-11-released.md │ │ ├── 07/ │ │ │ ├── debian-and-ubuntu-packaging.md │ │ │ ├── lua-mqtt-client.md │ │ │ ├── mosquitto-on-qnx.md │ │ │ ├── version-0-11-3-released.md │ │ │ ├── version-0-12-released.md │ │ │ └── wireshark-mqtt-decoder.md │ │ ├── 08/ │ │ │ ├── arch-linux-package.md │ │ │ ├── facebook-using-mqtt.attachments.json │ │ │ ├── facebook-using-mqtt.md │ │ │ ├── mosquitto-on-openwrt.md │ │ │ └── mqtt-standardisation.md │ │ ├── 09/ │ │ │ └── version-0-13-released.md │ │ ├── 10/ │ │ │ ├── mqtt-power-usage-on-android.md │ │ │ └── two.md │ │ ├── 11/ │ │ │ ├── android-mqtt-example-project.md │ │ │ ├── ibm-java-and-c-clients-to-be-open-source.md │ │ │ ├── new-linux-repositories.md │ │ │ ├── version-0-14-1-released.md │ │ │ ├── version-0-14-2-released.md │ │ │ └── version-0-14-released.md │ │ └── 12/ │ │ ├── mqtt-on-nanode.md │ │ └── version-0-14-3-released.md │ ├── 2012/ │ │ ├── 01/ │ │ │ ├── challenge-web-based-mqtt-graphing.md │ │ │ ├── do-you-use-mqtt.md │ │ │ ├── mosquitto-test-server.md │ │ │ └── version-0-14-4-released.md │ │ ├── 02/ │ │ │ ├── mqtt2pachube.md │ │ │ └── version-0-15-released.md │ │ ├── 03/ │ │ │ ├── quick-start-guide-for-mqtt-with-pachube.md │ │ │ └── upcoming-incompatible-library-changes.md │ │ ├── 05/ │ │ │ └── python-client-module-available-for-testing.md │ │ ├── 06/ │ │ │ ├── ipv6-on-test-server.md │ │ │ └── ssl-support-on-test-server.md │ │ ├── 07/ │ │ │ └── upcoming-release.md │ │ ├── 08/ │ │ │ ├── baby.attachments.json │ │ │ ├── baby.md │ │ │ ├── bugfix-coming-soon.md │ │ │ ├── version-1-0-1-released.md │ │ │ ├── version-1-0-2-released.md │ │ │ └── version-1-0-released.md │ │ ├── 09/ │ │ │ ├── updating-password-files.md │ │ │ └── version-1-0-3-released.md │ │ ├── 10/ │ │ │ └── version-1-0-4-released.md │ │ ├── 11/ │ │ │ ├── making-mosquitto-packages-for-debian-yourself.md │ │ │ └── version-1-0-5-released.md │ │ └── 12/ │ │ ├── libmosquitto-go-bindings.md │ │ └── version-1-1-released.md │ ├── 2013/ │ │ ├── 01/ │ │ │ ├── mosquitto-debian-repository.md │ │ │ ├── version-1-1-1-released.md │ │ │ └── version-1-1-2-released.md │ │ ├── 02/ │ │ │ ├── mqtt-standardisation-oasis-call-for-participation.md │ │ │ └── version-1-1-3-released.md │ │ ├── 04/ │ │ │ └── some-interesting-mqtt-things.md │ │ ├── 05/ │ │ │ └── mosquitto-javascript-client-deprecated.md │ │ ├── 07/ │ │ │ ├── authentication-plugins.md │ │ │ └── version-1-2-near-complete.md │ │ ├── 08/ │ │ │ ├── mosquitto-on-fedora.md │ │ │ ├── mqtt-watchdir.md │ │ │ └── version-1-2-released.md │ │ ├── 09/ │ │ │ └── version-1-2-1-released.md │ │ ├── 10/ │ │ │ └── version-1-2-2-released.md │ │ └── 12/ │ │ ├── paho-mqtt-python-client.md │ │ └── version-1-2-3-released.md │ ├── 2014/ │ │ ├── 03/ │ │ │ ├── version-1-3-1-released.md │ │ │ └── version-1-3-released.md │ │ ├── 05/ │ │ │ ├── new-arrival.attachments.json │ │ │ └── new-arrival.md │ │ ├── 07/ │ │ │ └── version-1-3-2-released.md │ │ ├── 08/ │ │ │ ├── version-1-3-3-released.md │ │ │ └── version-1-3-4-released.md │ │ └── 10/ │ │ ├── mosquitto-and-poodle.md │ │ ├── unintended-change-of-behaviour-in-1-3-4.md │ │ └── version-1-3-5-released.md │ ├── 2015/ │ │ ├── 01/ │ │ │ └── seeking-sponsorship.md │ │ ├── 02/ │ │ │ └── version-1-4-released.md │ │ ├── 04/ │ │ │ └── version-1-4-1-released.md │ │ ├── 05/ │ │ │ ├── mosquitto-and-current-unreleased-libwebsockets-branch.md │ │ │ └── version-1-4-2-released.md │ │ ├── 08/ │ │ │ └── version-1-4-3-released.md │ │ ├── 09/ │ │ │ └── version-1-4-4-released.md │ │ ├── 11/ │ │ │ └── version-1-4-5-released.md │ │ └── 12/ │ │ ├── using-lets-encrypt-certificates-with-mosquitto.md │ │ └── version-1-4-7-released.md │ ├── 2016/ │ │ ├── 01/ │ │ │ └── test6-mosquitto-org.md │ │ ├── 02/ │ │ │ └── version-1-4-8-released.md │ │ ├── 03/ │ │ │ ├── logo-contest-results-for-shortlisting.md │ │ │ ├── logo-contest.md │ │ │ └── repository-moved-to-github.md │ │ ├── 05/ │ │ │ ├── stickers.attachments.json │ │ │ └── stickers.md │ │ ├── 06/ │ │ │ └── version-1-4-9-released.md │ │ ├── 08/ │ │ │ ├── mqtt-v5-draft-features.md │ │ │ └── version-1-4-10-released.md │ │ └── 12/ │ │ └── pre-christmas-update.md │ ├── 2017/ │ │ ├── 02/ │ │ │ └── version-1-4-11-released.md │ │ ├── 03/ │ │ │ ├── for-the-final-time.attachments.json │ │ │ └── for-the-final-time.md │ │ ├── 05/ │ │ │ └── security-advisory-cve-2017-7650.md │ │ ├── 06/ │ │ │ ├── citing-eclipse-mosquitto.md │ │ │ └── security-advisory-cve-2017-9868.md │ │ └── 07/ │ │ ├── version-1-4-13-released.md │ │ └── version-1-4-14-released.md │ ├── 2018/ │ │ ├── 01/ │ │ │ └── mosquitto-debian-repo-key-updated.md │ │ ├── 02/ │ │ │ └── security-advisory-cve-2017-7651-cve-2017-7652.md │ │ ├── 05/ │ │ │ ├── press-release.md │ │ │ └── version-1-5-released.md │ │ ├── 08/ │ │ │ ├── updated-debian-repository-backend.md │ │ │ └── version-151-released.md │ │ ├── 09/ │ │ │ ├── security-advisory-cve-2018-12543.md │ │ │ └── version-152-released.md │ │ ├── 11/ │ │ │ ├── mqtt5-progress.md │ │ │ └── version-154-released.md │ │ └── 12/ │ │ └── version-155-released.md │ ├── 2019/ │ │ ├── 02/ │ │ │ ├── mqtt5-test-release.md │ │ │ ├── version-1-5-6-released.md │ │ │ ├── version-1-5-7-released.md │ │ │ └── version-1-5-8-released.md │ │ ├── 04/ │ │ │ ├── version-1-6-1-released.md │ │ │ ├── version-1-6-2-released.md │ │ │ └── version-1-6-released.md │ │ ├── 06/ │ │ │ └── version-1-6-3-released.md │ │ ├── 08/ │ │ │ └── version-1-6-4-released.md │ │ ├── 09/ │ │ │ ├── version-1-6-5-released.md │ │ │ ├── version-1-6-6-released.md │ │ │ └── version-1-6-7-released.md │ │ └── 11/ │ │ └── version-1-6-8-released.md │ ├── 2020/ │ │ ├── 02/ │ │ │ └── version-1-6-9-released.md │ │ ├── 05/ │ │ │ └── version-1-6-10-released.md │ │ ├── 06/ │ │ │ ├── mosquitto-ubuntu-appliance.md │ │ │ └── test-mosquitto-org-cert-updated.md │ │ ├── 08/ │ │ │ ├── version-1-6-11-released.md │ │ │ └── version-1-6-12-released.md │ │ └── 12/ │ │ ├── version-2-0-0-released.md │ │ ├── version-2-0-2-released.md │ │ ├── version-2-0-3-released.md │ │ └── version-2-0-4-released.md │ ├── 2021/ │ │ ├── 01/ │ │ │ ├── version-2-0-5-released.md │ │ │ └── version-2-0-6-released.md │ │ ├── 02/ │ │ │ ├── version-2-0-7-released.md │ │ │ └── version-2-0-8-released.md │ │ ├── 03/ │ │ │ └── version-2-0-9-released.md │ │ ├── 04/ │ │ │ └── version-2-0-10-released.md │ │ ├── 06/ │ │ │ └── version-2-0-11-released.md │ │ ├── 08/ │ │ │ └── version-2-0-12-released.md │ │ ├── 10/ │ │ │ └── version-2-0-13-released.md │ │ └── 11/ │ │ └── version-2-0-14-released.md │ ├── 2022/ │ │ └── 08/ │ │ └── version-2-0-15-released.md │ ├── 2023/ │ │ ├── 08/ │ │ │ ├── version-2-0-16-released.md │ │ │ └── version-2-0-17-released.md │ │ └── 09/ │ │ └── version-2-0-18-released.md │ ├── 2024/ │ │ └── 10/ │ │ ├── version-2-0-19-released.md │ │ └── version-2-0-20-released.md │ ├── 2025/ │ │ ├── 03/ │ │ │ └── version-2-0-21-released.md │ │ └── 07/ │ │ └── version-2-0-22-released.md │ └── 2026/ │ ├── 01/ │ │ ├── rc-2.1.0rc1-available.md │ │ └── version-2-1-0-released.md │ └── 02/ │ ├── version-2-1-1-released.md │ └── version-2-1-2-released.md ├── templates/ │ └── book.tmpl └── themes/ └── mosquitto/ ├── assets/ │ └── css/ │ ├── bulma.css │ ├── local.css │ └── man.css ├── engine ├── parent └── templates/ ├── base.tmpl ├── base_footer.tmpl ├── base_header.tmpl ├── base_helper.tmpl ├── index.tmpl ├── post.tmpl ├── post_header.tmpl └── story.tmpl