159 Commits
Author SHA1 Message Date
zhouyy bd2e23ed9f Optimize broker runtime and update dependencies 2026-05-31 09:53:43 +08:00
barryyt.cai.moxa cb1b1b1673 fix: mutex deadlock when connection close 2025-12-09 11:51:38 +08:00
joy,zhou c5b4c362a2 修复和优化日志字段的获取逻辑,确保在不同连接类型下正确获取远程地址。同时,调整注释格式以提高代码可读性。 2025-07-28 09:09:16 +08:00
wei_lilitw 7f2cbaaf20 fix(hmq):Set a higher debug level for logs to avoid printing too much log information and interfering with debugging 2024-05-27 11:03:48 +08:00
wei_lilitw 646f13199d fix(broker):fix unix sock file not be removed 2024-05-23 17:22:29 +08:00
wei_lilitw 67594b07ef fix(broker):fix unix sock file not be removed 2024-05-23 17:21:21 +08:00
wei_lilitw 9063c6069c feat(broker):Added pipe socket conditions for different systems 2024-04-19 15:24:14 +08:00
wei_lilitw d50464571e feat(hmq):add windows pipe socket.Use the open source project npipe, which nicely encapsulates the operations of windows pipe and returns the connection type net.Conn. 2024-04-18 17:31:35 +08:00
Lijinandwei_lilitw 8ddca9bdc3 feat(hmq):Provide handler StartUnixSocketClientListening used to handle the Unix communications (#198)
Co-authored-by: wei_lilitw <wei_lilitw@topsec.com.cn>
2024-04-15 19:03:24 +08:00
zhouyy 48b146d64e feat: update 2024-01-08 18:05:40 +08:00
Scott Joseph Spitler II cdff42698a Removed un-needed log line 2023-12-11 23:04:24 -05:00
Scott Joseph Spitler II 9fc57423db Fixed pubMsg when WillTopic is null
Previously the broker would run and compile, but would throw a runtime panic if the will was null because of GoLang's inline struct operator. Should REALLY consider adding a unit test
2023-12-11 22:53:41 -05:00
chowyu12 e3fa6573f6 Merge pull request #176 from spit4520/master
Added in GET /connections to update restarting node
2023-12-11 15:45:23 +08:00
Scott Joseph Spitler II 4f98faeefc Added in detailed conn client logs
Created new data types to store the last time a message was received from a device along with publishing the last will topic, keepalive time, and credentials over the /connections topic. These were mirrored also over the REST API for synchronous stateful services starting up from a crashed k8s pod or other usecases. Start by subscribing to /connections/+ and then GET /api/v1/connections to get the open connections, if a device connects while you are setting up your state, your messageHandler will handle the setup since it has the same information. This information has been published over  for devices you don't have any control over and for relay purposes. You can take all of the device information and now create a faux client emulating your downstream device, this may sound strange; but I have a usecase for it, a lot of cheap chinese IoT's were not designed for mass production and we have to fix their messages in the cloud before relaying them to our other legacy servers
2023-12-11 02:30:31 -05:00
Husy a94159e79c fix typo for error message (#191) 2023-11-05 19:15:35 -06:00
Husyandhusyhu e9f340c38f fix conn.Close() in function handleConnection (#180)
Co-authored-by: husyhu <husyhu@qq.com>
2023-03-29 09:45:12 +08:00
Scott Joseph Spitler II 3aea177ea8 Added in GET /connections to update restarting node
During a temporary service re-hydration, this allows the recovering service to:

1.) Sub to /connections for all incoming connections
then
2.) Get a list of all connections that exist rn.

This is useful for rebuilding caches and if any of your edge-workers need to be restarted, they can. It also allows for you not to have a 100% coupling in Redis or any other MQ stream. There are still no routes for the MQ streams to get all conns on connect, when we migrate to this we will add in this support as well
2022-09-23 16:57:26 -04:00
chowyu12 b2e79c3bea feat: update lib and replace json 2022-06-18 21:49:55 +08:00
ZhangJian He 5dc2114daf allow bridge mq cost msg (#162) 2022-05-20 21:27:48 +08:00
Lucas Vieira 0e3226ece1 Separates CI pipelines (#166)
* refactor: ♻️ fixes typo

* ci: 💚 separates continuous integration pipelines

Signed-off-by: Lucas Vieira <lucas.engen.cc@gmail.com>

* docs: 📚 adds CI badges
2022-05-20 21:26:33 +08:00
Lucas Vieira 061b485a3a fix: 🐛 fixes nil pointer dereference (#163)
checks connection type before accessing values #161

Signed-off-by: Lucas Vieira <lucas.engen.cc@gmail.com>
2022-04-26 10:40:45 +08:00
ZhangJian He 7787d3ca0d fix a misleading annotation (#160) 2022-04-25 20:38:03 +08:00
muXxer c53d8f8a0d Fix nil pointer exception in addr logs (#157) 2022-04-09 12:53:43 +08:00
ZhangJian He a85e9904c2 Add addr in broekr log (#146) 2022-04-04 20:41:33 +08:00
ZhangJian He a501565bab Allow publish message by clientId (#147) 2022-04-04 20:41:04 +08:00
Lucas Vieira f8a44be413 fix: 🐛 fixes critical race condition #152 (#154)
* fix: 🐛 fixes critical race condition #152

Signed-off-by: Lucas Vieira <lucas.engen.cc@gmail.com>

* fix: fixes race condition
2022-04-04 20:33:11 +08:00
Lucas Vieira 31864cdf2b fix: 🐛 fixes race condition (#155)
- this race condition occurs when a client is disconnected or when hmq checks
if client still alive

Signed-off-by: Lucas Vieira <lucas.engen.cc@gmail.com>
2022-04-04 20:32:38 +08:00
ZhangJian He 94ff8e8405 Update Support Go version (#143) 2022-01-30 09:14:29 +08:00
chowyu12andzhouyy bf2b91c535 update: go.mod and go version (#142)
Co-authored-by: zhouyy <zhouyy@ickey.cn>
2022-01-19 11:16:24 +08:00
ZhangJian He 108e934a85 [cleanup] delete comment out code (#137) 2022-01-10 10:59:39 +08:00
ZhangJian He 46b64e5b84 Close conn when read connect packet error (#136) 2022-01-10 10:59:15 +08:00
ZhangJian He ab117be4a8 Allow Broker DisConnect connections by ClientId (#135)
* Allow Broker DisConnect connections by ClientId

* Allow Broker DisConnect connections by ClientId
2022-01-05 11:15:45 +08:00
ZhangJian He 878e7fce3f Rmoeve unnecessary type convert (#134) 2022-01-05 11:15:26 +08:00
muXxerandLuca Moser 1d6979189a use locks around client maps (#126)
Co-authored-by: Luca Moser <moser.luca@gmail.com>
2021-08-10 10:46:38 +08:00
TrickIt 068d5e893c fix: close the connection after send connection refused connack packet. (#121) 2021-06-30 14:13:43 +08:00
TrickIt f66abe5fcb fix: if packet is disconnect from client, then need to break the read packet loop before next loop start, and clear will msg. (#120) 2021-05-31 15:26:26 +08:00
Luca Moser ccbe364f9f check whether subscription or topics manager are nil before using them in client Close() (#113) 2021-03-18 10:02:49 +08:00
Lucas Vieira 7cc3949bbe Packet fields validation (#111)
* chore: ignore .pre-commit-config.yaml

Signed-off-by: Lucas Vieira <lucas.engen.cc@gmail.com>

* fix: 🐛 perform validation on control packet fields (fhmq/hmq#104)

Signed-off-by: Lucas Vieira <lucas.engen@outlook.com>

* feat: ❇️ add handling of null UTF-8 encoded character

Signed-off-by: Lucas Vieira <lucas.engen@outlook.com>
2021-02-26 15:44:01 +08:00
Luca Moser 7bf5d52fd9 use defer to unlock in WriterPacket() (#107) 2021-02-07 14:50:31 +08:00
turtletramp ad7f4bc3f0 bug-2 adding RWMutex to inflight map and update the map access to use the mutex (#108) 2021-01-18 14:45:38 +08:00
Michael Stapelberg 524a9af060 retry listening indefinitely (#105)
When starting hmq immediately after booting, the IP address specified in the
--host flag (e.g. --host=10.0.0.217) might not be configured yet.

Without this commit, hmq would try to listen, give up, and then just hang.
With this commit, hmq automatically recovers.
2021-01-11 10:21:02 +08:00
joy.zhou 8f187157f3 Revert "op: low performance code (#102)" (#103)
This reverts commit c2248bed2b.
2021-01-07 16:24:09 +08:00
c2248bed2b op: low performance code (#102)
thanks
2021-01-07 14:12:28 +08:00
sngyai 6cb307d252 Feature qos1&qos2 (#99)
* client publish qos2

* server dispatch qos1&qos2

* Use at most one timer for each client

* Use at most one timer for each client
2020-11-30 11:34:03 +08:00
joy,zhou b8bacb4c3d fixed bug #96 2020-08-26 17:24:22 +08:00
chujiangke 481a61c520 fix (#90) 2020-06-24 15:14:25 +08:00
Rajiv Shah 4782f76048 Replace satori/go.uuid with google/uuid (#89) 2020-06-09 10:13:37 +08:00
Aleksey Myasnikov 1a374f9734 Update comm.go (#85) 2020-05-08 11:26:44 +08:00
jansonandjanson 3f60d23e85 fix fail in cluster deploy (#86)
Co-authored-by: janson <janson@gmail.com>
2020-05-08 11:26:26 +08:00
yu 3cf90d5231 add websocket client ip 2020-04-16 14:08:51 +08:00