projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
add a memcached_result_string_st(A) interface to support the cas related API wrapper
[m6w6/libmemcached]
/
libmemcached
/
memcached_io.c
diff --git
a/libmemcached/memcached_io.c
b/libmemcached/memcached_io.c
index 38544102bcc54765101b25e2beb68e4390db639d..ea8b25816d9d981fce5f4d40cc29f3cc0a84be2f 100644
(file)
--- a/
libmemcached/memcached_io.c
+++ b/
libmemcached/memcached_io.c
@@
-75,7
+75,7
@@
void memcached_io_preread(memcached_st *ptr)
#endif
ssize_t memcached_io_read(memcached_server_st *ptr,
#endif
ssize_t memcached_io_read(memcached_server_st *ptr,
-
char
*buffer, size_t length)
+
void
*buffer, size_t length)
{
char *buffer_ptr;
{
char *buffer_ptr;
@@
-154,11
+154,11
@@
ssize_t memcached_io_read(memcached_server_st *ptr,
break;
}
break;
}
- return (size_t)(buffer_ptr - buffer);
+ return (size_t)(buffer_ptr -
(char*)
buffer);
}
ssize_t memcached_io_write(memcached_server_st *ptr,
}
ssize_t memcached_io_write(memcached_server_st *ptr,
- const
char
*buffer, size_t length, char with_flush)
+ const
void
*buffer, size_t length, char with_flush)
{
size_t original_length;
const char* buffer_ptr;
{
size_t original_length;
const char* buffer_ptr;
@@
-204,9
+204,14
@@
ssize_t memcached_io_write(memcached_server_st *ptr,
return original_length;
}
return original_length;
}
-memcached_return memcached_io_close(memcached_server_st *ptr)
+memcached_return memcached_io_close(memcached_server_st *ptr
, uint8_t io_death
)
{
{
- close(ptr->fd);
+ /* in case of death shutdown to avoid blocking at close() */
+
+ if (io_death)
+ shutdown(ptr->fd, SHUT_RDWR);
+ else
+ close(ptr->fd);
return MEMCACHED_SUCCESS;
}
return MEMCACHED_SUCCESS;
}