0001-Revert-Fix-NetBSD-build.patch 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. From 18d41744338d6e291612e66e8baace4faaad7b2e Mon Sep 17 00:00:00 2001
  2. From: Peter Korsgaard <peter@korsgaard.com>
  3. Date: Fri, 6 Dec 2024 08:27:53 +0100
  4. Subject: [PATCH] Revert "Fix NetBSD build"
  5. This reverts commit 88b7bb3521cc51cb1e80630395ae736040cc8ff8.
  6. This unfortunately broke non-thread builds, so revert it until fixed
  7. upstream.
  8. Upstream: https://github.com/eclipse-mosquitto/mosquitto/issues/3183
  9. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
  10. ---
  11. lib/dummypthread.h | 14 ++++++++++++
  12. lib/handle_pubackcomp.c | 4 ++--
  13. lib/mosquitto_internal.h | 6 +++++-
  14. lib/packet_mosq.c | 46 ++++++++++++++++++++--------------------
  15. lib/pthread_compat.h | 28 ------------------------
  16. lib/util_mosq.c | 32 ++++++++++++++--------------
  17. 6 files changed, 60 insertions(+), 70 deletions(-)
  18. create mode 100644 lib/dummypthread.h
  19. delete mode 100644 lib/pthread_compat.h
  20. diff --git a/lib/dummypthread.h b/lib/dummypthread.h
  21. new file mode 100644
  22. index 00000000..c0eb2c15
  23. --- /dev/null
  24. +++ b/lib/dummypthread.h
  25. @@ -0,0 +1,14 @@
  26. +#ifndef DUMMYPTHREAD_H
  27. +#define DUMMYPTHREAD_H
  28. +
  29. +#define pthread_create(A, B, C, D)
  30. +#define pthread_join(A, B)
  31. +#define pthread_cancel(A)
  32. +#define pthread_testcancel()
  33. +
  34. +#define pthread_mutex_init(A, B)
  35. +#define pthread_mutex_destroy(A)
  36. +#define pthread_mutex_lock(A)
  37. +#define pthread_mutex_unlock(A)
  38. +
  39. +#endif
  40. diff --git a/lib/handle_pubackcomp.c b/lib/handle_pubackcomp.c
  41. index d70d602d..4568bb40 100644
  42. --- a/lib/handle_pubackcomp.c
  43. +++ b/lib/handle_pubackcomp.c
  44. @@ -57,9 +57,9 @@ int handle__pubackcomp(struct mosquitto *mosq, const char *type)
  45. }
  46. }
  47. - COMPAT_pthread_mutex_lock(&mosq->msgs_out.mutex);
  48. + pthread_mutex_lock(&mosq->msgs_out.mutex);
  49. util__increment_send_quota(mosq);
  50. - COMPAT_pthread_mutex_unlock(&mosq->msgs_out.mutex);
  51. + pthread_mutex_unlock(&mosq->msgs_out.mutex);
  52. rc = packet__read_uint16(&mosq->in_packet, &mid);
  53. if(rc) return rc;
  54. diff --git a/lib/mosquitto_internal.h b/lib/mosquitto_internal.h
  55. index 31120258..ac71ffbf 100644
  56. --- a/lib/mosquitto_internal.h
  57. +++ b/lib/mosquitto_internal.h
  58. @@ -33,7 +33,11 @@ Contributors:
  59. #endif
  60. #include <stdlib.h>
  61. -#include <pthread_compat.h>
  62. +#if defined(WITH_THREADING) && !defined(WITH_BROKER)
  63. +# include <pthread.h>
  64. +#else
  65. +# include <dummypthread.h>
  66. +#endif
  67. #ifdef WITH_SRV
  68. # include <ares.h>
  69. diff --git a/lib/packet_mosq.c b/lib/packet_mosq.c
  70. index b063eb71..fd716baf 100644
  71. --- a/lib/packet_mosq.c
  72. +++ b/lib/packet_mosq.c
  73. @@ -129,13 +129,13 @@ void packet__cleanup_all_no_locks(struct mosquitto *mosq)
  74. void packet__cleanup_all(struct mosquitto *mosq)
  75. {
  76. - COMPAT_pthread_mutex_lock(&mosq->current_out_packet_mutex);
  77. - COMPAT_pthread_mutex_lock(&mosq->out_packet_mutex);
  78. + pthread_mutex_lock(&mosq->current_out_packet_mutex);
  79. + pthread_mutex_lock(&mosq->out_packet_mutex);
  80. packet__cleanup_all_no_locks(mosq);
  81. - COMPAT_pthread_mutex_unlock(&mosq->out_packet_mutex);
  82. - COMPAT_pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  83. + pthread_mutex_unlock(&mosq->out_packet_mutex);
  84. + pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  85. }
  86. @@ -151,7 +151,7 @@ int packet__queue(struct mosquitto *mosq, struct mosquitto__packet *packet)
  87. packet->to_process = packet->packet_length;
  88. packet->next = NULL;
  89. - COMPAT_pthread_mutex_lock(&mosq->out_packet_mutex);
  90. + pthread_mutex_lock(&mosq->out_packet_mutex);
  91. #ifdef WITH_BROKER
  92. if(db.config->max_queued_messages > 0 && mosq->out_packet_count >= db.config->max_queued_messages){
  93. @@ -174,7 +174,7 @@ int packet__queue(struct mosquitto *mosq, struct mosquitto__packet *packet)
  94. }
  95. mosq->out_packet_last = packet;
  96. mosq->out_packet_count++;
  97. - COMPAT_pthread_mutex_unlock(&mosq->out_packet_mutex);
  98. + pthread_mutex_unlock(&mosq->out_packet_mutex);
  99. #ifdef WITH_BROKER
  100. # ifdef WITH_WEBSOCKETS
  101. if(mosq->wsi){
  102. @@ -232,8 +232,8 @@ int packet__write(struct mosquitto *mosq)
  103. if(!mosq) return MOSQ_ERR_INVAL;
  104. if(mosq->sock == INVALID_SOCKET) return MOSQ_ERR_NO_CONN;
  105. - COMPAT_pthread_mutex_lock(&mosq->current_out_packet_mutex);
  106. - COMPAT_pthread_mutex_lock(&mosq->out_packet_mutex);
  107. + pthread_mutex_lock(&mosq->current_out_packet_mutex);
  108. + pthread_mutex_lock(&mosq->out_packet_mutex);
  109. if(mosq->out_packet && !mosq->current_out_packet){
  110. mosq->current_out_packet = mosq->out_packet;
  111. mosq->out_packet = mosq->out_packet->next;
  112. @@ -242,7 +242,7 @@ int packet__write(struct mosquitto *mosq)
  113. }
  114. mosq->out_packet_count--;
  115. }
  116. - COMPAT_pthread_mutex_unlock(&mosq->out_packet_mutex);
  117. + pthread_mutex_unlock(&mosq->out_packet_mutex);
  118. #ifdef WITH_BROKER
  119. if(mosq->current_out_packet){
  120. @@ -252,7 +252,7 @@ int packet__write(struct mosquitto *mosq)
  121. state = mosquitto__get_state(mosq);
  122. if(state == mosq_cs_connect_pending){
  123. - COMPAT_pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  124. + pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  125. return MOSQ_ERR_SUCCESS;
  126. }
  127. @@ -274,10 +274,10 @@ int packet__write(struct mosquitto *mosq)
  128. || errno == WSAENOTCONN
  129. #endif
  130. ){
  131. - COMPAT_pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  132. + pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  133. return MOSQ_ERR_SUCCESS;
  134. }else{
  135. - COMPAT_pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  136. + pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  137. switch(errno){
  138. case COMPAT_ECONNRESET:
  139. return MOSQ_ERR_CONN_LOST;
  140. @@ -296,7 +296,7 @@ int packet__write(struct mosquitto *mosq)
  141. if(((packet->command)&0xF6) == CMD_PUBLISH){
  142. G_PUB_MSGS_SENT_INC(1);
  143. #ifndef WITH_BROKER
  144. - COMPAT_pthread_mutex_lock(&mosq->callback_mutex);
  145. + pthread_mutex_lock(&mosq->callback_mutex);
  146. if(mosq->on_publish){
  147. /* This is a QoS=0 message */
  148. mosq->in_callback = true;
  149. @@ -309,7 +309,7 @@ int packet__write(struct mosquitto *mosq)
  150. mosq->on_publish_v5(mosq, mosq->userdata, packet->mid, 0, NULL);
  151. mosq->in_callback = false;
  152. }
  153. - COMPAT_pthread_mutex_unlock(&mosq->callback_mutex);
  154. + pthread_mutex_unlock(&mosq->callback_mutex);
  155. }else if(((packet->command)&0xF0) == CMD_DISCONNECT){
  156. do_client_disconnect(mosq, MOSQ_ERR_SUCCESS, NULL);
  157. packet__cleanup(packet);
  158. @@ -321,7 +321,7 @@ int packet__write(struct mosquitto *mosq)
  159. }
  160. /* Free data and reset values */
  161. - COMPAT_pthread_mutex_lock(&mosq->out_packet_mutex);
  162. + pthread_mutex_lock(&mosq->out_packet_mutex);
  163. mosq->current_out_packet = mosq->out_packet;
  164. if(mosq->out_packet){
  165. mosq->out_packet = mosq->out_packet->next;
  166. @@ -330,7 +330,7 @@ int packet__write(struct mosquitto *mosq)
  167. }
  168. mosq->out_packet_count--;
  169. }
  170. - COMPAT_pthread_mutex_unlock(&mosq->out_packet_mutex);
  171. + pthread_mutex_unlock(&mosq->out_packet_mutex);
  172. packet__cleanup(packet);
  173. mosquitto__free(packet);
  174. @@ -338,9 +338,9 @@ int packet__write(struct mosquitto *mosq)
  175. #ifdef WITH_BROKER
  176. mosq->next_msg_out = db.now_s + mosq->keepalive;
  177. #else
  178. - COMPAT_pthread_mutex_lock(&mosq->msgtime_mutex);
  179. + pthread_mutex_lock(&mosq->msgtime_mutex);
  180. mosq->next_msg_out = mosquitto_time() + mosq->keepalive;
  181. - COMPAT_pthread_mutex_unlock(&mosq->msgtime_mutex);
  182. + pthread_mutex_unlock(&mosq->msgtime_mutex);
  183. #endif
  184. }
  185. #ifdef WITH_BROKER
  186. @@ -348,7 +348,7 @@ int packet__write(struct mosquitto *mosq)
  187. mux__remove_out(mosq);
  188. }
  189. #endif
  190. - COMPAT_pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  191. + pthread_mutex_unlock(&mosq->current_out_packet_mutex);
  192. return MOSQ_ERR_SUCCESS;
  193. }
  194. @@ -536,9 +536,9 @@ int packet__read(struct mosquitto *mosq)
  195. #ifdef WITH_BROKER
  196. keepalive__update(mosq);
  197. #else
  198. - COMPAT_pthread_mutex_lock(&mosq->msgtime_mutex);
  199. + pthread_mutex_lock(&mosq->msgtime_mutex);
  200. mosq->last_msg_in = mosquitto_time();
  201. - COMPAT_pthread_mutex_unlock(&mosq->msgtime_mutex);
  202. + pthread_mutex_unlock(&mosq->msgtime_mutex);
  203. #endif
  204. }
  205. return MOSQ_ERR_SUCCESS;
  206. @@ -571,9 +571,9 @@ int packet__read(struct mosquitto *mosq)
  207. #ifdef WITH_BROKER
  208. keepalive__update(mosq);
  209. #else
  210. - COMPAT_pthread_mutex_lock(&mosq->msgtime_mutex);
  211. + pthread_mutex_lock(&mosq->msgtime_mutex);
  212. mosq->last_msg_in = mosquitto_time();
  213. - COMPAT_pthread_mutex_unlock(&mosq->msgtime_mutex);
  214. + pthread_mutex_unlock(&mosq->msgtime_mutex);
  215. #endif
  216. return rc;
  217. }
  218. diff --git a/lib/pthread_compat.h b/lib/pthread_compat.h
  219. deleted file mode 100644
  220. index ca1f27dc..00000000
  221. --- a/lib/pthread_compat.h
  222. +++ /dev/null
  223. @@ -1,28 +0,0 @@
  224. -#ifndef PTHREAD_COMPAT_
  225. -#define PTHREAD_COMPAT_
  226. -
  227. -#if defined(WITH_THREADING) && !defined(WITH_BROKER)
  228. -# include <pthread.h>
  229. -
  230. -# define COMPAT_pthread_create(A, B, C, D) pthread_create((A), (B), (C), (D))
  231. -# define COMPAT_pthread_join(A, B) pthread_join((A), (B))
  232. -# define COMPAT_pthread_cancel(A) pthread_cancel((A))
  233. -# define COMPAT_pthread_testcancel() pthread_testcancel()
  234. -
  235. -# define COMPAT_pthread_mutex_init(A, B) pthread_mutex_init((A), (B))
  236. -# define COMPAT_pthread_mutex_destroy(A) pthread_mutex_init((A))
  237. -# define COMPAT_pthread_mutex_lock(A) pthread_mutex_lock((A))
  238. -# define COMPAT_pthread_mutex_unlock(A) pthread_mutex_unlock((A))
  239. -#else
  240. -# define COMPAT_pthread_create(A, B, C, D)
  241. -# define COMPAT_pthread_join(A, B)
  242. -# define COMPAT_pthread_cancel(A)
  243. -# define COMPAT_pthread_testcancel()
  244. -
  245. -# define COMPAT_pthread_mutex_init(A, B)
  246. -# define COMPAT_pthread_mutex_destroy(A)
  247. -# define COMPAT_pthread_mutex_lock(A)
  248. -# define COMPAT_pthread_mutex_unlock(A)
  249. -#endif
  250. -
  251. -#endif
  252. diff --git a/lib/util_mosq.c b/lib/util_mosq.c
  253. index 4bebcbd0..22f8c4d5 100644
  254. --- a/lib/util_mosq.c
  255. +++ b/lib/util_mosq.c
  256. @@ -87,10 +87,10 @@ int mosquitto__check_keepalive(struct mosquitto *mosq)
  257. return MOSQ_ERR_SUCCESS;
  258. }
  259. #endif
  260. - COMPAT_pthread_mutex_lock(&mosq->msgtime_mutex);
  261. + pthread_mutex_lock(&mosq->msgtime_mutex);
  262. next_msg_out = mosq->next_msg_out;
  263. last_msg_in = mosq->last_msg_in;
  264. - COMPAT_pthread_mutex_unlock(&mosq->msgtime_mutex);
  265. + pthread_mutex_unlock(&mosq->msgtime_mutex);
  266. if(mosq->keepalive && mosq->sock != INVALID_SOCKET &&
  267. (now >= next_msg_out || now - last_msg_in >= mosq->keepalive)){
  268. @@ -98,10 +98,10 @@ int mosquitto__check_keepalive(struct mosquitto *mosq)
  269. if(state == mosq_cs_active && mosq->ping_t == 0){
  270. send__pingreq(mosq);
  271. /* Reset last msg times to give the server time to send a pingresp */
  272. - COMPAT_pthread_mutex_lock(&mosq->msgtime_mutex);
  273. + pthread_mutex_lock(&mosq->msgtime_mutex);
  274. mosq->last_msg_in = now;
  275. mosq->next_msg_out = now + mosq->keepalive;
  276. - COMPAT_pthread_mutex_unlock(&mosq->msgtime_mutex);
  277. + pthread_mutex_unlock(&mosq->msgtime_mutex);
  278. }else{
  279. #ifdef WITH_BROKER
  280. # ifdef WITH_BRIDGE
  281. @@ -118,7 +118,7 @@ int mosquitto__check_keepalive(struct mosquitto *mosq)
  282. }else{
  283. rc = MOSQ_ERR_KEEPALIVE;
  284. }
  285. - COMPAT_pthread_mutex_lock(&mosq->callback_mutex);
  286. + pthread_mutex_lock(&mosq->callback_mutex);
  287. if(mosq->on_disconnect){
  288. mosq->in_callback = true;
  289. mosq->on_disconnect(mosq, mosq->userdata, rc);
  290. @@ -129,7 +129,7 @@ int mosquitto__check_keepalive(struct mosquitto *mosq)
  291. mosq->on_disconnect_v5(mosq, mosq->userdata, rc, NULL);
  292. mosq->in_callback = false;
  293. }
  294. - COMPAT_pthread_mutex_unlock(&mosq->callback_mutex);
  295. + pthread_mutex_unlock(&mosq->callback_mutex);
  296. return rc;
  297. #endif
  298. @@ -150,11 +150,11 @@ uint16_t mosquitto__mid_generate(struct mosquitto *mosq)
  299. uint16_t mid;
  300. assert(mosq);
  301. - COMPAT_pthread_mutex_lock(&mosq->mid_mutex);
  302. + pthread_mutex_lock(&mosq->mid_mutex);
  303. mosq->last_mid++;
  304. if(mosq->last_mid == 0) mosq->last_mid++;
  305. mid = mosq->last_mid;
  306. - COMPAT_pthread_mutex_unlock(&mosq->mid_mutex);
  307. + pthread_mutex_unlock(&mosq->mid_mutex);
  308. return mid;
  309. }
  310. @@ -280,14 +280,14 @@ int util__random_bytes(void *bytes, int count)
  311. int mosquitto__set_state(struct mosquitto *mosq, enum mosquitto_client_state state)
  312. {
  313. - COMPAT_pthread_mutex_lock(&mosq->state_mutex);
  314. + pthread_mutex_lock(&mosq->state_mutex);
  315. #ifdef WITH_BROKER
  316. if(mosq->state != mosq_cs_disused)
  317. #endif
  318. {
  319. mosq->state = state;
  320. }
  321. - COMPAT_pthread_mutex_unlock(&mosq->state_mutex);
  322. + pthread_mutex_unlock(&mosq->state_mutex);
  323. return MOSQ_ERR_SUCCESS;
  324. }
  325. @@ -296,9 +296,9 @@ enum mosquitto_client_state mosquitto__get_state(struct mosquitto *mosq)
  326. {
  327. enum mosquitto_client_state state;
  328. - COMPAT_pthread_mutex_lock(&mosq->state_mutex);
  329. + pthread_mutex_lock(&mosq->state_mutex);
  330. state = mosq->state;
  331. - COMPAT_pthread_mutex_unlock(&mosq->state_mutex);
  332. + pthread_mutex_unlock(&mosq->state_mutex);
  333. return state;
  334. }
  335. @@ -306,18 +306,18 @@ enum mosquitto_client_state mosquitto__get_state(struct mosquitto *mosq)
  336. #ifndef WITH_BROKER
  337. void mosquitto__set_request_disconnect(struct mosquitto *mosq, bool request_disconnect)
  338. {
  339. - COMPAT_pthread_mutex_lock(&mosq->state_mutex);
  340. + pthread_mutex_lock(&mosq->state_mutex);
  341. mosq->request_disconnect = request_disconnect;
  342. - COMPAT_pthread_mutex_unlock(&mosq->state_mutex);
  343. + pthread_mutex_unlock(&mosq->state_mutex);
  344. }
  345. bool mosquitto__get_request_disconnect(struct mosquitto *mosq)
  346. {
  347. bool request_disconnect;
  348. - COMPAT_pthread_mutex_lock(&mosq->state_mutex);
  349. + pthread_mutex_lock(&mosq->state_mutex);
  350. request_disconnect = mosq->request_disconnect;
  351. - COMPAT_pthread_mutex_unlock(&mosq->state_mutex);
  352. + pthread_mutex_unlock(&mosq->state_mutex);
  353. return request_disconnect;
  354. }
  355. --
  356. 2.39.5