diff --git a/src/sbbs3/js_mqtt.c b/src/sbbs3/js_mqtt.c index cdae1c80e7676f4abc3834de52c4afb3fd24455d..d4a54d0a2c9d22c36e7f0f9fe68ef1b98513250e 100644 --- a/src/sbbs3/js_mqtt.c +++ b/src/sbbs3/js_mqtt.c @@ -707,13 +707,23 @@ static JSBool js_mqtt_constructor(JSContext* cx, uintN argc, jsval *arglist) p->cfg = scfg->mqtt; p->handle = mosquitto_new(client_id, /* clean_session: */true, /* userdata: */p); free(client_id); + if(p->handle == NULL) { + JS_ReportError(cx, "mosquitto_new failure (errno=%d)", errno); + free(p); + return JS_FALSE; + } if(!JS_SetPrivate(cx, obj, p)) { JS_ReportError(cx,"JS_SetPrivate failed"); free(p); return JS_FALSE; } mosquitto_message_callback_set(p->handle, mqtt_message_received); - mosquitto_loop_start(p->handle); + int result = mosquitto_loop_start(p->handle); + if(result != MOSQ_ERR_SUCCESS) { + JS_ReportError(cx, "mosquitto_loop_start error %d", result); + free(p); + return JS_FALSE; + } #ifdef BUILD_JSDOCS js_DescribeSyncObject(cx,obj,"Class used for MQTT communications",320);