projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
bug fix for recursive decent into quit()
[awesomized/libmemcached]
/
libmemcached
/
io.c
diff --git
a/libmemcached/io.c
b/libmemcached/io.c
index 17398aa37dd2bc54f790f6eec81b403b09456c69..ef46a0d9e460b93f819e8c70d368ce3c2c107b72 100644
(file)
--- a/
libmemcached/io.c
+++ b/
libmemcached/io.c
@@
-53,7
+53,8
@@
static memcached_return_t io_wait(memcached_server_instance_st *ptr,
if (ptr->root->flags.no_block == false)
timeout= -1;
if (ptr->root->flags.no_block == false)
timeout= -1;
- while (1)
+ size_t loop_max= 5;
+ while (--loop_max)
{
error= poll(&fds, 1, timeout);
{
error= poll(&fds, 1, timeout);
@@
-63,12
+64,14
@@
static memcached_return_t io_wait(memcached_server_instance_st *ptr,
return MEMCACHED_SUCCESS;
case 0:
return MEMCACHED_TIMEOUT;
return MEMCACHED_SUCCESS;
case 0:
return MEMCACHED_TIMEOUT;
+#ifdef TARGET_OS_LINUX
case ERESTART:
case ERESTART:
+#endif
case EINTR:
continue;
default:
ptr->cached_errno= error;
case EINTR:
continue;
default:
ptr->cached_errno= error;
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
return MEMCACHED_FAILURE;
}
return MEMCACHED_FAILURE;
}
@@
-77,7
+80,7
@@
static memcached_return_t io_wait(memcached_server_instance_st *ptr,
/* Imposssible for anything other then -1 */
WATCHPOINT_ASSERT(error == -1);
ptr->cached_errno= error;
/* Imposssible for anything other then -1 */
WATCHPOINT_ASSERT(error == -1);
ptr->cached_errno= error;
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
return MEMCACHED_FAILURE;
}
return MEMCACHED_FAILURE;
}
@@
-257,14
+260,16
@@
memcached_return_t memcached_io_read(memcached_server_instance_st *ptr,
{
case EAGAIN:
case EINTR:
{
case EAGAIN:
case EINTR:
+#ifdef TARGET_OS_LINUX
case ERESTART:
case ERESTART:
+#endif
if ((rc= io_wait(ptr, MEM_READ)) == MEMCACHED_SUCCESS)
continue;
/* fall through */
default:
{
if ((rc= io_wait(ptr, MEM_READ)) == MEMCACHED_SUCCESS)
continue;
/* fall through */
default:
{
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
*nread= -1;
return rc;
}
*nread= -1;
return rc;
}
@@
-281,7
+286,7
@@
memcached_return_t memcached_io_read(memcached_server_instance_st *ptr,
for blocking I/O we do not return 0 and for non-blocking case
it will return EGAIN if data is not immediatly available.
*/
for blocking I/O we do not return 0 and for non-blocking case
it will return EGAIN if data is not immediatly available.
*/
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
*nread= -1;
return MEMCACHED_UNKNOWN_READ_FAILURE;
}
*nread= -1;
return MEMCACHED_UNKNOWN_READ_FAILURE;
}
@@
-564,11
+569,11
@@
static ssize_t io_flush(memcached_server_instance_st *ptr,
if (rc == MEMCACHED_SUCCESS || rc == MEMCACHED_TIMEOUT)
continue;
if (rc == MEMCACHED_SUCCESS || rc == MEMCACHED_TIMEOUT)
continue;
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
return -1;
}
default:
return -1;
}
default:
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
*error= MEMCACHED_ERRNO;
return -1;
}
*error= MEMCACHED_ERRNO;
return -1;
}
@@
-577,7
+582,7
@@
static ssize_t io_flush(memcached_server_instance_st *ptr,
if (ptr->type == MEMCACHED_CONNECTION_UDP &&
(size_t)sent_length != write_length)
{
if (ptr->type == MEMCACHED_CONNECTION_UDP &&
(size_t)sent_length != write_length)
{
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
return -1;
}
return -1;
}
@@
-607,7
+612,7
@@
static ssize_t io_flush(memcached_server_instance_st *ptr,
*/
void memcached_io_reset(memcached_server_instance_st *ptr)
{
*/
void memcached_io_reset(memcached_server_instance_st *ptr)
{
- memcached_quit_server(ptr,
1
);
+ memcached_quit_server(ptr,
true
);
}
/**
}
/**