Calling Pachube - only works once

Hi,
I’m using a WiShield to get temperature values from Pachube.
The first time my program calls Pachube it works great. I get all the data and parse it down to the variables I need. Some time goes buy, say 5 minutes and I want to get the values again.
This time I make multiple successful calls to Pachube but never get any data. I believe this is a memory issue, but don’t know where to begin.
Can anyone point me in the right direction?

   void printGetData(char* data, int len) {

   //if we are not in the middle of a packet AND we find the OK token
   if(false == inValidPacket && NULL != strstr(data, "HTTP/1.1 200 OK")) {
      //mark that we are in a valid packet
      inValidPacket = true;
      //temporary for debugging purposes
      Serial.println("Data reception started");
   }
   else {
      //temporary for debugging purposes
     // Serial.println("How did we get here?");
   }

   //if we were in a valid packet AND we get the ending 0 == len call
   if(true == inValidPacket && 0 == len) {
      //mark that we are no longer in a valid packet
      inValidPacket = false;

      //grab out the values with something like sscanf()
      // Need to point sscanf to the right place
      
char *data; //data from the WiShield - set to something like the "re-hydrated" string above
char *begin;
char *end;

const char *ptr = recvData;

   int n;
   while ( sscanf(ptr, "%64[^\n]%n", field, &n) == 1 )
  
   {
      printf("field = \"%s\"\n", field);
      Serial.print ("Field = ");
      Serial.println(field);
  
      if(strlen(field) <= 15 && (strlen(field) > 4))
         {
           scan2();   //parse out actual values from last bit of data 
             
         }
     
      delay(10);
      ptr += n; /* advance the pointer by the number of characters read */
      if ( *ptr != '\n' )
      {
         break; /* didn't find an expected delimiter, done? */
      }
    while ( *ptr == '\n' )
        {
        ++ptr; /* skip the delimiter */
          }
   }
      //temporary for debugging purposes
      Serial.println("Data reception ended");
      Serial.println("Data string  = ");
      Serial.println(recvData);
      Serial.println(" ");
      Serial.println("Values from sscanf");
      Serial.print("Temp 1 ");
      Serial.println(temp1);
      Serial.print("Temp 2 =  ");
      Serial.println(temp2);
      Serial.print("Sun =  ");
      Serial.println(sun);

      //reset the received data buffer to all 0s - clean up...memset 400
      memset(recvData, 0, 400 * sizeof(char));
   }
   else {
      //probably not needed...
      memset(recvData, 0, 400 * sizeof(char));
      //stash away the last bit of data received
      memcpy(recvData, data, len);
      //temporary for debugging purposes
      Serial.println("Received data:");
     // Serial.println(data);
   }

}