Touch + Processing

Hey I am confused as to why my code doesn’t keep looping.
I cant count how many times it “cylon’s” , but id like to run this program and have it loop indefinitely.
My leds just stop and stay red.

#include <FastLED.h>

// # of leds in strip
#define NUM_LEDS_PER_STRIP 20
// [ 1 ] #define DATA_PIN 7


CRGB leds[NUM_LEDS_PER_STRIP];

char buffer[16];   //maximum expected length 
int len = 0;

void setup()
{
  Serial.begin(57600); // or try 57600
  Serial.println("resetting");
  // [ 1 ]LEDS.addLeds<WS2812,DATA_PIN,RGB>(leds,NUM_LEDS);
  FastLED.addLeds<WS2812B, 4>(leds, NUM_LEDS_PER_STRIP); // [ 2 ]
  FastLED.addLeds<WS2812B, 7>(leds, NUM_LEDS_PER_STRIP); // [ 2 ]
  
  LEDS.setBrightness(150); 
}

void fadeall() { for(int i = 0; i < NUM_LEDS_PER_STRIP; i++) { leds[i].nscale8(180); } }  // last # does full or just dot

void loop()
{
    if (Serial.available() > 0) 
    
    { 
  static uint8_t hue = 0;
  Serial.print("x");
  // First slide the led in one direction
  for(int i = 0; i < NUM_LEDS_PER_STRIP; i++) {
    // Set the i'th led to red 
    leds[i] = CHSV(hue++, 255, 255);
    // Show the leds
    FastLED.show(); 
    // now that we've shown the leds, reset the i'th led to black
    //leds[i] = CRGB::White; // when leds zoom boack theyll leave a color trail 
    //fadeall(); // run these so it fades at end
    // Wait a little bit before we loop around and do it again
    delay(25);
  }
  Serial.print("x");

  // Now go in the other direction.  
  for(int i = (NUM_LEDS_PER_STRIP)-1; i >= 0; i--) {
    // Set the i'th led to red 
    leds[i] = CHSV(hue++, 255, 255);
    // Show the leds
    FastLED.show();
    // now that we've shown the leds, reset the i'th led to black
    // leds[i] = CRGB::Black;
    //fadeall(); //run these so it fades at end
    // Wait a little bit before we loop around and do it again
    delay(25);
  }
    
    
    
    
    
    
    {
        int incomingByte = Serial.read();
        buffer[len++] = incomingByte;
        //
        // check for overflow
        //
        if (len >= 16) // was 16 
        {
            // overflow, resetting
            len = 0;
        }
        //
        // check for newline (end of message)
        //
        if (incomingByte == '\n')
        {
            int red, green, blue;
            int n = sscanf(buffer, "%d %d %d", &red, &green, &blue);
            if (n == 3)
            {
                // valid message received, use values here..
                Serial.print("Message Received.");
                analogWrite(hue , NUM_LEDS_PER_STRIP);
            }
            else
            {
                 // parsing error, reject
                 Serial.print("REJECTED MAYNE!.");
            }
            len = 0; // reset buffer counter
        }
    }
}

}