goto respfail;
        if (len > 0) {
                int interval = atoi(recvbuf);
-               if (interval != vpninfo->trojan_interval) {
+               if (interval != 0) {
                        vpninfo->trojan_interval = interval;
                        vpn_progress(vpninfo, PRG_DEBUG,
                                     _("Got reauth interval from TNCC: %d seconds\n"),
 
        int ret;
        int work_done = 0;
 
+       /* Periodic TNCC */
+       if (trojan_check_deadline(vpninfo, timeout)) {
+               oncp_send_tncc_command(vpninfo, 0);
+               return 1;
+       }
+
        if (vpninfo->ssl_fd == -1)
                goto do_reconnect;
 
                   handle that */
                int receive_mtu = MAX(16384, vpninfo->ip_info.mtu);
 
-               if (trojan_check_deadline(vpninfo, timeout)) {
-                       /* Periodic TNCC */
-                       oncp_send_tncc_command(vpninfo, 0);
-               }
-
                len = receive_mtu + vpninfo->pkt_trailer;
                if (!vpninfo->cstp_pkt) {
                        vpninfo->cstp_pkt = malloc(sizeof(struct pkt) + len);