Calling Pachube - only works once

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 = ");
      if(strlen(field) <= 15 && (strlen(field) > 4))
           scan2();   //parse out actual values from last bit of data 
      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(" ");
      Serial.println("Values from sscanf");
      Serial.print("Temp 1 ");
      Serial.print("Temp 2 =  ");
      Serial.print("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);