Rollup of fixes/error message corrections in mget. This also remove the
authorBrian Aker <brian@tangent.org>
Sat, 12 Feb 2011 10:52:48 +0000 (02:52 -0800)
committerBrian Aker <brian@tangent.org>
Sat, 12 Feb 2011 10:52:48 +0000 (02:52 -0800)
infinite wait on non-block.

1  2 
libmemcached/get.c
libmemcached/io.c

index 8d76507cd29dbd1564b6d6b12617f5efa4a4679f,876389bf7f454d0f4b04ce7926920686ef75c62e..aa4e6f53de49eb2fba940dc08046f50c9ef6909e
@@@ -245,7 -250,8 +250,7 @@@ static memcached_return_t memcached_mge
  
        if ((memcached_io_writev(instance, vector, 4, false)) == -1)
        {
-         rc= MEMCACHED_SOME_ERRORS;
 -        fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
+         failures_occured_in_sending= true;
          continue;
        }
        WATCHPOINT_ASSERT(instance->cursor_active == 0);
        if ((memcached_io_writev(instance, (vector + 1), 3, false)) == -1)
        {
          memcached_server_response_reset(instance);
-         rc= MEMCACHED_SOME_ERRORS;
 -        fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
+         failures_occured_in_sending= true;
          continue;
        }
      }
        /* We need to do something about non-connnected hosts in the future */
        if ((memcached_io_write(instance, "\r\n", 2, true)) == -1)
        {
-         rc= MEMCACHED_SOME_ERRORS;
 -        fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
+         failures_occured_in_sending= true;
+       }
+       else
+       {
+         success_happened= true;
        }
      }
    }
index bc74af7d985962f920be22543a758a6b457c664c,3b5d44f570e2003313963a6c70a1600287f382ba..9f38af5c213d51d6cc4b57e781b537ded58000dd
@@@ -385,7 -383,10 +381,9 @@@ static ssize_t _io_write(memcached_serv
        buffer_end= MAX_UDP_DATAGRAM_LENGTH;
        should_write= length;
        if (ptr->write_buffer_offset + should_write > buffer_end)
 -        fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
+       {
          return -1;
+       }
      }
      else
      {
@@@ -574,7 -578,10 +574,9 @@@ static ssize_t io_flush(memcached_serve
      rc= memcached_purge(ptr);
  
      if (rc != MEMCACHED_SUCCESS && rc != MEMCACHED_STORED)
 -      fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
+     {
        return -1;
+     }
    }
    ssize_t sent_length;
    size_t return_length;
  
    // UDP Sanity check, make sure that we are not sending somthing too big
    if (ptr->type == MEMCACHED_CONNECTION_UDP && write_length > MAX_UDP_DATAGRAM_LENGTH)
 -    fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
+   {
      return -1;
+   }
  
    if (ptr->write_buffer_offset == 0 || (ptr->type == MEMCACHED_CONNECTION_UDP
                                          && ptr->write_buffer_offset == UDP_DATAGRAM_HEADER_LENGTH))
      if (ptr->type == MEMCACHED_CONNECTION_UDP)
        increment_udp_message_id(ptr);
  
 -    assert(ptr->fd != -1);
++    WATCHPOINT_ASSERT(ptr->fd != -1);
      sent_length= send(ptr->fd, local_write_ptr, write_length, 0);
      if (sent_length == SOCKET_ERROR)
      {
              continue;
  
            memcached_quit_server(ptr, true);
 -          fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
            return -1;
          }
+       case ENOTCONN:
+       case EPIPE:
        default:
 -        fprintf(stderr, "%s %u  %u %u\n", ptr->hostname, ptr->port, ptr->io_bytes_sent, ptr->server_failure_counter);
 -        fprintf(stderr, "%s:%d (%s)(%s)\n", __FILE__, __LINE__,__func__, strerror(errno));fflush(stdout);
          memcached_quit_server(ptr, true);
          *error= MEMCACHED_ERRNO;
 -        assert(ptr->fd == -1);
++        WATCHPOINT_ASSERT(ptr->fd == -1);
          return -1;
        }
      }