~brianaker/libmemcached/submake-fix-tags

« back to all changes in this revision

Viewing changes to libmemcached/io.cc

  • Committer: Continuous Integration
  • Date: 2014-02-02 13:49:39 UTC
  • mfrom: (1172.2.2 1.0)
  • Revision ID: ci@tangent.org-20140202134939-nkevf32pa9m5u4qa
Merge lp:~493pocbrcycmdw7yksonho9o2qzz-o18bz-d18ecat4t1b76tkfi3vttrkfngli/libmemcached/libmemcached Build: jenkins-Libmemcached-445

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