projects
/
awesomized
/
libmemcached
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
|
github
raw
|
patch
|
inline
| side by side (parent:
ec50b15
)
Small bugfixes for errno (since memcached_quit_server() modifies errno)
author
Nicolas Van Eenaeme
<nicolas@poison.be>
Wed, 20 Nov 2013 14:39:27 +0000
(15:39 +0100)
committer
Nicolas Van Eenaeme
<nicolas@poison.be>
Wed, 20 Nov 2013 14:39:27 +0000
(15:39 +0100)
libmemcached/io.cc
patch
|
blob
|
history
diff --git
a/libmemcached/io.cc
b/libmemcached/io.cc
index 8796d5034b8a2dd82927443662e32918579dab58..e9d3ad39465b5838c8eac83cada203d46913582c 100644
(file)
--- a/
libmemcached/io.cc
+++ b/
libmemcached/io.cc
@@
-342,6
+342,7
@@
static bool io_flush(memcached_instance_st* instance,
}
ssize_t sent_length= ::send(instance->fd, local_write_ptr, write_length, flags);
}
ssize_t sent_length= ::send(instance->fd, local_write_ptr, write_length, flags);
+ int local_errno= get_socket_errno(); // We cache in case memcached_quit_server() modifies errno
if (sent_length == SOCKET_ERROR)
{
if (sent_length == SOCKET_ERROR)
{
@@
-381,14
+382,14
@@
static bool io_flush(memcached_instance_st* instance,
}
memcached_quit_server(instance, true);
}
memcached_quit_server(instance, true);
- error= memcached_set_errno(*instance,
get_socket_errno()
, MEMCACHED_AT);
+ error= memcached_set_errno(*instance,
local_errno
, MEMCACHED_AT);
return false;
}
case ENOTCONN:
case EPIPE:
default:
memcached_quit_server(instance, true);
return false;
}
case ENOTCONN:
case EPIPE:
default:
memcached_quit_server(instance, true);
- error= memcached_set_errno(*instance,
get_socket_errno()
, MEMCACHED_AT);
+ error= memcached_set_errno(*instance,
local_errno
, MEMCACHED_AT);
WATCHPOINT_ASSERT(instance->fd == INVALID_SOCKET);
return false;
}
WATCHPOINT_ASSERT(instance->fd == INVALID_SOCKET);
return false;
}
@@
-422,6
+423,8
@@
static memcached_return_t _io_fill(memcached_instance_st* instance)
do
{
data_read= ::recv(instance->fd, instance->read_buffer, MEMCACHED_MAX_BUFFER, MSG_NOSIGNAL);
do
{
data_read= ::recv(instance->fd, instance->read_buffer, MEMCACHED_MAX_BUFFER, MSG_NOSIGNAL);
+ int local_errno= get_socket_errno(); // We cache in case memcached_quit_server() modifies errno
+
if (data_read == SOCKET_ERROR)
{
switch (get_socket_errno())
if (data_read == SOCKET_ERROR)
{
switch (get_socket_errno())
@@
-460,7
+463,7
@@
static memcached_return_t _io_fill(memcached_instance_st* instance)
case ECONNREFUSED:
default:
memcached_quit_server(instance, true);
case ECONNREFUSED:
default:
memcached_quit_server(instance, true);
- memcached_set_errno(*instance,
get_socket_errno()
, MEMCACHED_AT);
+ memcached_set_errno(*instance,
local_errno
, MEMCACHED_AT);
break;
}
break;
}