~tangent-trunk/libmemcached/1.2

« back to all changes in this revision

Viewing changes to libmemcached/io.cc

  • Committer: Continuous Integration
  • Date: 2014-02-06 09:21:14 UTC
  • mfrom: (1110.1.2 libmemcached-1.2)
  • Revision ID: ci@tangent.org-20140206092114-cp72onmoikv5huli
Merge bzr://10.0.3.21/ Build: jenkins-Libmemcached-454

Show diffs side-by-side

added added

removed removed

Lines of Context:
342
342
    }
343
343
 
344
344
    ssize_t sent_length= ::send(instance->fd, local_write_ptr, write_length, flags);
 
345
    int local_errno= get_socket_errno(); // We cache in case memcached_quit_server() modifies errno
345
346
 
346
347
    if (sent_length == SOCKET_ERROR)
347
348
    {
381
382
          }
382
383
 
383
384
          memcached_quit_server(instance, true);
384
 
          error= memcached_set_errno(*instance, get_socket_errno(), MEMCACHED_AT);
 
385
          error= memcached_set_errno(*instance, local_errno, MEMCACHED_AT);
385
386
          return false;
386
387
        }
387
388
      case ENOTCONN:
388
389
      case EPIPE:
389
390
      default:
390
391
        memcached_quit_server(instance, true);
391
 
        error= memcached_set_errno(*instance, get_socket_errno(), MEMCACHED_AT);
 
392
        error= memcached_set_errno(*instance, local_errno, MEMCACHED_AT);
392
393
        WATCHPOINT_ASSERT(instance->fd == INVALID_SOCKET);
393
394
        return false;
394
395
      }
422
423
  do
423
424
  {
424
425
    data_read= ::recv(instance->fd, instance->read_buffer, MEMCACHED_MAX_BUFFER, MSG_NOSIGNAL);
 
426
    int local_errno= get_socket_errno(); // We cache in case memcached_quit_server() modifies errno
 
427
 
425
428
    if (data_read == SOCKET_ERROR)
426
429
    {
427
430
      switch (get_socket_errno())
460
463
      case ECONNREFUSED:
461
464
      default:
462
465
        memcached_quit_server(instance, true);
463
 
        memcached_set_errno(*instance, get_socket_errno(), MEMCACHED_AT);
 
466
        memcached_set_errno(*instance, local_errno, MEMCACHED_AT);
464
467
        break;
465
468
      }
466
469