Skip to content

Commit 7c08b16

Browse files
embhornclaude
andcommitted
Fix TLS disabled when WebSocket is enabled
Remove !defined(ENABLE_MQTT_WEBSOCKET) guards from mqtt_socket.c and mqtt_socket.h that incorrectly excluded the entire wolfSSL TLS layer when --enable-websocket was configured. This broke TLS for all non-WebSocket clients (mqttclient, firmware, etc.). The WebSocket client handles TLS through libwebsockets and never calls these functions, so the guards were unnecessary. Also remove the local BrokerTls_IORecv/IOSend workaround from mqtt_broker.c since MqttSocket_TlsSocketReceive/Send are now available. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 06b179d commit 7c08b16

3 files changed

Lines changed: 11 additions & 60 deletions

File tree

src/mqtt_broker.c

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -352,44 +352,6 @@ int MqttBrokerNet_Init(MqttBrokerNet* net)
352352
}
353353

354354
#ifdef ENABLE_MQTT_TLS
355-
/* When ENABLE_MQTT_WEBSOCKET is also defined, mqtt_socket.c excludes the
356-
* MqttSocket_TlsSocket{Receive,Send} functions (they're meant for client-side
357-
* only). The broker TLS backend needs equivalent wolfSSL IO callbacks, so
358-
* define them locally. */
359-
#ifdef ENABLE_MQTT_WEBSOCKET
360-
static int BrokerTls_IORecv(WOLFSSL* ssl, char *buf, int sz, void *ptr)
361-
{
362-
int rc;
363-
MqttClient *client = (MqttClient*)ptr;
364-
(void)ssl;
365-
rc = client->net->read(client->net->context, (byte*)buf, sz,
366-
client->tls.timeout_ms_read);
367-
client->tls.sockRcRead = rc;
368-
if (rc == 0 || rc == MQTT_CODE_ERROR_TIMEOUT || rc == MQTT_CODE_CONTINUE) {
369-
return WOLFSSL_CBIO_ERR_WANT_READ;
370-
}
371-
else if (rc < 0) {
372-
return WOLFSSL_CBIO_ERR_GENERAL;
373-
}
374-
return rc;
375-
}
376-
static int BrokerTls_IOSend(WOLFSSL* ssl, char *buf, int sz, void *ptr)
377-
{
378-
int rc;
379-
MqttClient *client = (MqttClient*)ptr;
380-
(void)ssl;
381-
rc = client->net->write(client->net->context, (byte*)buf, sz,
382-
client->tls.timeout_ms_write);
383-
client->tls.sockRcWrite = rc;
384-
if (rc == 0 || rc == MQTT_CODE_ERROR_TIMEOUT || rc == MQTT_CODE_CONTINUE) {
385-
return WOLFSSL_CBIO_ERR_WANT_WRITE;
386-
}
387-
else if (rc < 0) {
388-
return WOLFSSL_CBIO_ERR_GENERAL;
389-
}
390-
return rc;
391-
}
392-
#endif /* ENABLE_MQTT_WEBSOCKET */
393355
static int BrokerTls_Init(MqttBroker* broker)
394356
{
395357
WOLFSSL_CTX* ctx = NULL;
@@ -452,13 +414,8 @@ static int BrokerTls_Init(MqttBroker* broker)
452414

453415
/* Set wolfSSL IO callbacks */
454416
if (rc == WOLFSSL_SUCCESS) {
455-
#ifdef ENABLE_MQTT_WEBSOCKET
456-
wolfSSL_CTX_SetIORecv(ctx, BrokerTls_IORecv);
457-
wolfSSL_CTX_SetIOSend(ctx, BrokerTls_IOSend);
458-
#else
459417
wolfSSL_CTX_SetIORecv(ctx, MqttSocket_TlsSocketReceive);
460418
wolfSSL_CTX_SetIOSend(ctx, MqttSocket_TlsSocketSend);
461-
#endif
462419
}
463420

464421
/* Mutual TLS: load CA and require client certificate */

src/mqtt_socket.c

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@
5555

5656

5757
/* Public Functions */
58-
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL) && \
59-
!defined(ENABLE_MQTT_WEBSOCKET)
58+
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL)
6059
int MqttSocket_TlsSocketReceive(WOLFSSL* ssl, char *buf, int sz,
6160
void *ptr)
6261
{
@@ -101,7 +100,7 @@ int MqttSocket_TlsSocketSend(WOLFSSL* ssl, char *buf, int sz,
101100
}
102101
return rc;
103102
}
104-
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL && !ENABLE_MQTT_WEBSOCKET*/
103+
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL */
105104

106105
int MqttSocket_Init(MqttClient *client, MqttNet *net)
107106
{
@@ -114,8 +113,7 @@ int MqttSocket_Init(MqttClient *client, MqttNet *net)
114113
client->net = net;
115114
MqttClient_Flags(client, (MQTT_CLIENT_FLAG_IS_CONNECTED |
116115
MQTT_CLIENT_FLAG_IS_TLS), 0);;
117-
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL) && \
118-
!defined(ENABLE_MQTT_WEBSOCKET)
116+
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL)
119117
client->tls.ctx = NULL;
120118
client->tls.ssl = NULL;
121119
client->tls.timeout_ms_read = client->cmd_timeout_ms;
@@ -135,8 +133,7 @@ static int MqttSocket_WriteDo(MqttClient *client, const byte* buf, int buf_len,
135133
{
136134
int rc;
137135

138-
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL) && \
139-
!defined(ENABLE_MQTT_WEBSOCKET)
136+
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL)
140137
if (MqttClient_Flags(client,0,0) & MQTT_CLIENT_FLAG_IS_TLS) {
141138
client->tls.timeout_ms_write = timeout_ms;
142139
client->tls.sockRcWrite = 0; /* init value */
@@ -166,7 +163,7 @@ static int MqttSocket_WriteDo(MqttClient *client, const byte* buf, int buf_len,
166163
}
167164
}
168165
else
169-
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL && !ENABLE_MQTT_WEBSOCKET*/
166+
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL */
170167
{
171168
rc = client->net->write(client->net->context, buf, buf_len,
172169
timeout_ms);
@@ -248,8 +245,7 @@ static int MqttSocket_ReadDo(MqttClient *client, byte* buf, int buf_len,
248245
{
249246
int rc;
250247

251-
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL) && \
252-
!defined(ENABLE_MQTT_WEBSOCKET)
248+
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL)
253249
if (MqttClient_Flags(client,0,0) & MQTT_CLIENT_FLAG_IS_TLS) {
254250
client->tls.timeout_ms_read = timeout_ms;
255251
client->tls.sockRcRead = 0; /* init value */
@@ -284,7 +280,7 @@ static int MqttSocket_ReadDo(MqttClient *client, byte* buf, int buf_len,
284280
}
285281
}
286282
else
287-
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL && !ENABLE_MQTT_WEBSOCKET */
283+
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL */
288284
{
289285
rc = client->net->read(client->net->context, buf, buf_len, timeout_ms);
290286
}
@@ -421,8 +417,7 @@ int MqttSocket_Connect(MqttClient *client, const char* host, word16 port,
421417
MqttClient_Flags(client, 0, MQTT_CLIENT_FLAG_IS_CONNECTED);
422418
}
423419

424-
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL) && \
425-
!defined(ENABLE_MQTT_WEBSOCKET)
420+
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL)
426421
if (use_tls) {
427422
/* Clear any previous TLS error */
428423
client->tls.lastError = 0;
@@ -543,7 +538,7 @@ int MqttSocket_Connect(MqttClient *client, const char* host, word16 port,
543538

544539
#else
545540
(void)cb;
546-
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL && !ENABLE_MQTT_WEBSOCKET */
541+
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL */
547542

548543
#ifdef WOLFMQTT_DEBUG_SOCKET
549544
PRINTF("MqttSocket_Connect: Rc=%d", rc);

wolfmqtt/mqtt_socket.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,12 @@ WOLFMQTT_LOCAL int MqttSocket_Connect(struct _MqttClient *client,
106106
MqttTlsCb cb);
107107
WOLFMQTT_LOCAL int MqttSocket_Disconnect(struct _MqttClient *client);
108108

109-
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL) && \
110-
!defined(ENABLE_MQTT_WEBSOCKET)
109+
#if defined(ENABLE_MQTT_TLS) && !defined(ENABLE_MQTT_CURL)
111110
/* make these public for cases where user needs to create
112111
* WOLFSSL_CTX context and WOLFSSL object in the TLS callback */
113112
WOLFMQTT_API int MqttSocket_TlsSocketReceive(WOLFSSL* ssl, char *buf, int sz, void *ptr);
114113
WOLFMQTT_API int MqttSocket_TlsSocketSend(WOLFSSL* ssl, char *buf, int sz, void *ptr);
115-
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL && !ENABLE_MQTT_WEBSOCKET */
114+
#endif /* ENABLE_MQTT_TLS && !ENABLE_MQTT_CURL */
116115

117116
#ifdef __cplusplus
118117
} /* extern "C" */

0 commit comments

Comments
 (0)