Problema en fución switch - case en ESP32 conectado a labview por wifi

Hola todos, tengo una colsulta que espero alguine me pueda asesorar, estoy comunicando un ESP32 con labview para hacer un sistema de monitoreo y control de temperatura, la comunicacion esta bien tengo 4 casos en mi esp32, uno donde al enviar una “a” , se realiza le monitoreo y u control automatico donde se acciona o apaga un ventilador y un foco, un caso “b” para encender manbualmente el ventilador y el caso “c” para encender el foco, el problema es qu tengo un default para mantener apagado el ventilador y el foco cuando no se este recibiendo nada, pero si enciendo el cualquierea de los dos o los dos y dejo de recibir cualquier caracter, el foco y el ventilador no se apagan de quedan prendidos y no se la razon, espero me puiedan ayudar de antemano gracias.

Les dejo el codigo de mi esp32.

// Load Wi-Fi library
#include <WiFi.h>

const int analogIn = 35;
int vent = 26; //GPIO D0 ESP NODE
int luz = 27; //GPIO D0 ESP NODE
int RawValue= 0;
double Voltage = 0;
double tempC = 0;
double tempF = 0;
int maxi = 30 ;            // Indica la temperatura en la que enciende el ventilador
int mini = 15 ;            // Indica la temperatura en la que apaga el ventilador
// Replace with your network credentials
char ssid[] = "IZZI-4608";
char password[] = "D4AB820D4608";

// Set web server port number to 80
WiFiServer server(8888);

// Variable to store the HTTP request
String header;

// Current time
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0; 
// Define timeout time in milliseconds (example: 2000ms = 2s)
const long timeoutTime = 2000;

void setup() {
  Serial.begin(115200);  
  pinMode( vent, OUTPUT);    //LED   
  digitalWrite(vent, HIGH);
  pinMode( luz, OUTPUT);    //LED   
  digitalWrite(luz, HIGH);
  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  
 // Start listening for clients6
  server.begin();
}

//=====================================================================================================================================
void loop() 
{
  
  // listen for incoming clients
  WiFiClient client = server.available();
  
  if (client) {
    //Client handling code
    if(client.connected())
    {
      Serial.println("Client Connected");
    }
    
    while(client.connected()){      
      while(client.available()>0)
      {

        // read data from the connected client
      char data = client.read();
      Serial.write(data);
      switch(data)
      {
        case 'a':
          RawValue = analogRead(analogIn);
          Voltage = (RawValue / 2048.0) * 3300; // 5000 to get millivots.
          tempC = Voltage * 0.1;
          tempF = (tempC * 1.8) + 32; // conver to F
          Serial.println(tempC,1);
          client.println(tempC,1);
           if (tempC >= maxi){
              digitalWrite(vent, LOW);
              digitalWrite(luz, HIGH);
           }              
           else if (tempC <= mini){
              digitalWrite(vent, HIGH);
              digitalWrite(luz, LOW); 
           }
           else {
              digitalWrite(vent, HIGH);
              digitalWrite(luz, HIGH); 
           }           
          //delay(500);
        break;
        case 'b':
          digitalWrite(vent,LOW);
        break;
        case 'c':
          digitalWrite(luz,LOW);
        break;
        default:
          digitalWrite(vent,HIGH);
          digitalWrite(luz,HIGH);          
        break;
       }
       //delay(100);
      }
     }
    //close the connection to the client
    client.stop();
    Serial.println("Client disconnected");  
}
  }

Hola si pones el default en high siempre estarán encendidos, salvo que tengas la circuitería al revés.

 default:
         digitalWrite(vent,HIGH);
         digitalWrite(luz,HIGH);

Me parece que el problema lo tenes con

while(client.available()>0)

porque si no recibe nada no se cumple la condición y el while no se ejecuta y obviamente tampoco el switch, menos aún el default.

Lo que sorprende es que Labview y su comunidad tiene códigos sugeridos para cada caso.
No los has visto?