This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How to solve mqtt_disconnect error -57?

Window10
nrf tag: 1.2.0
SES v4.4.2a

I'm attempting to code a one-shot mqtt function, but it fails in v1.2.0 whiile it succeeded in v1.1.0. I coded the below main.c by modifying mqtt_simple a bit. I don't touch other files but main.c

A mqtt_disconect generates error -57. Why does this happen?

<main.c>

void main(void)
{
	int err;

	printk("The MQTT simple sample started\n");

	modem_configure();

	client_init(&client);

	while (1) {

        err = mqtt_connect(&client);
        if (err != 0) {
            printk("ERROR: mqtt_connect %d\n", err);
            return;
        } else {
            printk("MQTT connected!\n");
        }

        err = fds_init(&client);
        if (err != 0) {
            printk("ERROR: fds_init %d\n", err);
            return;
        }

		err = poll(&fds, 1, 500);
		if (err < 0) {
			printk("ERROR: poll %d\n", errno);
			break;
        } else {
            printk("after poll\n");
        }


		err = mqtt_live(&client);
		if ((err != 0) && (err != -EAGAIN)) {
			printk("ERROR: mqtt_live %d\n", err);
			break;
		}

		if ((fds.revents & POLLIN) == POLLIN) {
			err = mqtt_input(&client);
			if (err != 0) {
				printk("ERROR: mqtt_input %d\n", err);
				break;
			}
		}

		if ((fds.revents & POLLERR) == POLLERR) {
			printk("POLLERR\n");
			break;
		}

		if ((fds.revents & POLLNVAL) == POLLNVAL) {
			printk("POLLNVAL\n");
			break;
		}

        err = mqtt_disconnect(&client);
        if (err) {
            // ENOTCONN 57     /* Socket is not connected */
            printk("Could not disconnect MQTT client. Error: %d\n", err);
        } else {
            printk("MQTT disconnected!\n");
        }

        k_sleep(10*1000);
	}

}

<output>

*** Booting Zephyr OS build v2.1.99-ncs1  ***
The MQTT simple sample started
LTE Link Connecting ...
LTE Link Connected!
IPv4 Address found 137.135.83.217
MQTT connected!
after poll
Could not disconnect MQTT client. Error: -57
MQTT connected!
after poll
Could not disconnect MQTT client. Error: -57
MQTT connected!
after poll
Could not disconnect MQTT client. Error: -57

Related