DTLS (CoAP) Client not receiving Close Notify alert

I am running CoAP client with DTLS enabled on an nRF9161dk.

I poll socket using this code:

 while (1) {
        if (!socket_ready) {
            k_msleep(100);
            continue;
        }

        /* Poll socket */
        err = poll(&fds, 1, 0);
        if (err < 0) {
            LOG_ERR("Poll error: %d", errno);
            continue;
        }

        if (fds.revents & POLLHUP) {
            LOG_ERR("POLLHUP");
            continue;
        }

        if (fds.revents & POLLERR) {
            LOG_ERR("POLLERR");
            continue;
        }

        if (fds.revents & POLLNVAL) {
            LOG_ERR("POLLNVAL");
            continue;
        }

        /* Handle data */
        if (fds.revents & POLLIN) {
            LOG_ERR("POLLIN");
            received = recv(sock, coap_buf, sizeof(coap_buf), 0);

            if (received < 0) {
                LOG_ERR("Socket error:  %d, exit\n", errno);
                continue;
                // break;
            } else if (received == 0) {
                LOG_ERR("Empty datagram\n");
                continue;
            }

            LOG_INF("Packet received, proceeding to handling\n");

            err = client_handle_response(coap_buf, received);
            if (err < 0) {
                LOG_ERR("Invalid response, exit\n");
                break;
            }
        }

        k_msleep(10);
    }

I am able to receive data (POLLIN), but when server closes session and sends close_notify, I am not able to receive POLLHUP.

I've tried nRF SDK 2.6.1 and 2.7.0. Modem FW version: mfw_nrf91x1_2.0.1.

Has anyone else encountered this problem?

Related