[PATCH] Add test_bucket() function.
Tomash Brechko
tomash.brechko at gmail.com
Tue Nov 13 13:28:38 UTC 2007
---
trunk/server/memcached.c | 74 ++++++++++++++++-----------------------------
1 files changed, 26 insertions(+), 48 deletions(-)
diff --git a/trunk/server/memcached.c b/trunk/server/memcached.c
index 999fcb6..9e4271f 100644
--- a/trunk/server/memcached.c
+++ b/trunk/server/memcached.c
@@ -1097,6 +1097,24 @@ static void process_stat(conn *c, token_t *tokens, const size_t ntokens) {
out_string(c, "ERROR");
}
+static inline
+bool
+test_bucket(conn *c)
+{
+ int bucket = c->bucket;
+ if (bucket == -1) {
+ out_string(c, "CLIENT_ERROR no BG data in managed mode");
+ return false;
+ }
+ c->bucket = -1;
+ if (buckets[bucket] != c->gen) {
+ out_string(c, "ERROR_NOT_OWNER");
+ return false;
+ }
+
+ return true;
+}
+
/* ntokens is overwritten here... shrug.. */
static inline void process_get_command(conn *c, token_t *tokens, size_t ntokens, bool return_key_ptr) {
char *key;
@@ -1110,18 +1128,8 @@ static inline void process_get_command(conn *c, token_t *tokens, size_t ntokens,
assert(c != NULL);
- if (settings.managed) {
- int bucket = c->bucket;
- if (bucket == -1) {
- out_string(c, "CLIENT_ERROR no BG data in managed mode");
- return;
- }
- c->bucket = -1;
- if (buckets[bucket] != c->gen) {
- out_string(c, "ERROR_NOT_OWNER");
- return;
- }
- }
+ if (settings.managed && !test_bucket(c))
+ return;
do {
while(key_token->length != 0) {
@@ -1274,18 +1282,8 @@ static void process_update_command(conn *c, token_t *tokens, const size_t ntoken
stats_prefix_record_set(key);
}
- if (settings.managed) {
- int bucket = c->bucket;
- if (bucket == -1) {
- out_string(c, "CLIENT_ERROR no BG data in managed mode");
- return;
- }
- c->bucket = -1;
- if (buckets[bucket] != c->gen) {
- out_string(c, "ERROR_NOT_OWNER");
- return;
- }
- }
+ if (settings.managed && !test_bucket(c))
+ return;
it = item_alloc(key, nkey, flags, realtime(exptime), vlen+2);
@@ -1358,18 +1356,8 @@ static void process_arithmetic_command(conn *c, token_t *tokens, const size_t nt
key = tokens[KEY_TOKEN].value;
nkey = tokens[KEY_TOKEN].length;
- if (settings.managed) {
- int bucket = c->bucket;
- if (bucket == -1) {
- out_string(c, "CLIENT_ERROR no BG data in managed mode");
- return;
- }
- c->bucket = -1;
- if (buckets[bucket] != c->gen) {
- out_string(c, "ERROR_NOT_OWNER");
- return;
- }
- }
+ if (settings.managed && !test_bucket(c))
+ return;
delta = strtoll(tokens[2].value, NULL, 10);
@@ -1448,18 +1436,8 @@ static void process_delete_command(conn *c, token_t *tokens, const size_t ntoken
set_noreply_maybe(c, tokens, ntokens);
- if (settings.managed) {
- int bucket = c->bucket;
- if (bucket == -1) {
- out_string(c, "CLIENT_ERROR no BG data in managed mode");
- return;
- }
- c->bucket = -1;
- if (buckets[bucket] != c->gen) {
- out_string(c, "ERROR_NOT_OWNER");
- return;
- }
- }
+ if (settings.managed && !test_bucket(c))
+ return;
key = tokens[KEY_TOKEN].value;
nkey = tokens[KEY_TOKEN].length;
--
1.5.3.5.529.ge3d6d
More information about the memcached
mailing list