projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Merge in all changes related to being able to read configuration files.
[awesomized/libmemcached]
/
libmemcached
/
protocol
/
ascii_handler.c
diff --git
a/libmemcached/protocol/ascii_handler.c
b/libmemcached/protocol/ascii_handler.c
index 19aff1156d3c56698242627239714536a3eb0589..802b0859653351647b2ab2284ea21b1a1b3296c4 100644
(file)
--- a/
libmemcached/protocol/ascii_handler.c
+++ b/
libmemcached/protocol/ascii_handler.c
@@
-34,7
+34,7
@@
static uint16_t parse_ascii_key(char **start)
if (len == 0 || len > 240 || (*c != '\0' && *c != '\r' && iscntrl(*c)))
{
if (len == 0 || len > 240 || (*c != '\0' && *c != '\r' && iscntrl(*c)))
{
- return
0
;
+ return
EXIT_SUCCESS
;
}
return len;
}
return len;
@@
-80,6
+80,7
@@
static void send_command_usage(memcached_protocol_client_st *client)
[UNKNOWN_CMD]= "CLIENT_ERROR: Unknown command\r\n",
};
[UNKNOWN_CMD]= "CLIENT_ERROR: Unknown command\r\n",
};
+ client->mute = false;
spool_string(client, errmsg[client->ascii_command]);
}
spool_string(client, errmsg[client->ascii_command]);
}
@@
-91,10
+92,10
@@
static void send_command_usage(memcached_protocol_client_st *client)
*/
static protocol_binary_response_status
ascii_version_response_handler(const void *cookie,
*/
static protocol_binary_response_status
ascii_version_response_handler(const void *cookie,
- const void *text,
- uint32_t textlen)
+
const void *text,
+
uint32_t textlen)
{
{
- memcached_protocol_client_st *client= (
void
*)cookie;
+ memcached_protocol_client_st *client= (
memcached_protocol_client_st
*)cookie;
spool_string(client, "VERSION ");
client->root->spool(client, text, textlen);
spool_string(client, "\r\n");
spool_string(client, "VERSION ");
client->root->spool(client, text, textlen);
spool_string(client, "\r\n");
@@
-145,12
+146,12
@@
ascii_get_response_handler(const void *cookie,
if (client->ascii_command == GETS_CMD)
{
if (client->ascii_command == GETS_CMD)
{
- snprintf(dest, sizeof(buffer) - used, " %u %u %
llu
\r\n", flags,
-
flags, (unsigned long long)
cas);
+ snprintf(dest, sizeof(buffer) - used, " %u %u %
" PRIu64 "
\r\n", flags,
+
bodylen,
cas);
}
else
{
}
else
{
- snprintf(dest, sizeof(buffer) - used, " %u %u\r\n", flags,
flags
);
+ snprintf(dest, sizeof(buffer) - used, " %u %u\r\n", flags,
bodylen
);
}
client->root->spool(client, buffer, strlen(buffer));
}
client->root->spool(client, buffer, strlen(buffer));
@@
-385,7
+386,7
@@
static void process_delete(memcached_protocol_client_st *client,
else
{
char msg[80];
else
{
char msg[80];
- snprintf(msg, sizeof(msg), "SERVER_ERROR: delete failed %u\r\n",(
in
t)rval);
+ snprintf(msg, sizeof(msg), "SERVER_ERROR: delete failed %u\r\n",(
uint32_
t)rval);
spool_string(client, msg);
}
}
spool_string(client, msg);
}
}
@@
-439,8
+440,7
@@
static void process_arithmetic(memcached_protocol_client_st *client,
if (rval == PROTOCOL_BINARY_RESPONSE_SUCCESS)
{
char buffer[80];
if (rval == PROTOCOL_BINARY_RESPONSE_SUCCESS)
{
char buffer[80];
- snprintf(buffer, sizeof(buffer), "%llu\r\n",
- (unsigned long long)result);
+ snprintf(buffer, sizeof(buffer), "%"PRIu64"\r\n", result);
spool_string(client, buffer);
}
else
spool_string(client, buffer);
}
else
@@
-558,7
+558,7
@@
static inline int process_storage_command(memcached_protocol_client_st *client,
{
/* Keep on reading */
recover_tokenize_command(start, *end);
{
/* Keep on reading */
recover_tokenize_command(start, *end);
- return
1
;
+ return
EXIT_FAILURE
;
}
void *data= (*end) + 1;
}
void *data= (*end) + 1;
@@
-658,7
+658,7
@@
static inline int process_storage_command(memcached_protocol_client_st *client,
*end += nbytes + 2;
*end += nbytes + 2;
- return
0
;
+ return
EXIT_SUCCESS
;
}
static int process_cas_command(memcached_protocol_client_st *client,
}
static int process_cas_command(memcached_protocol_client_st *client,
@@
-832,9
+832,10
@@
memcached_protocol_event_t memcached_ascii_protocol_process_data(memcached_proto
case REPLACE_CMD:
error= process_replace_command(client, tokens, ntokens,
ptr, &end, *length);
case REPLACE_CMD:
error= process_replace_command(client, tokens, ntokens,
ptr, &end, *length);
+ break;
case CAS_CMD:
error= process_cas_command(client, tokens, ntokens, ptr, &end, *length);
case CAS_CMD:
error= process_cas_command(client, tokens, ntokens, ptr, &end, *length);
- break;
+
break;
case APPEND_CMD:
error= process_append_command(client, tokens, ntokens,
ptr, &end, *length);
case APPEND_CMD:
error= process_append_command(client, tokens, ntokens,
ptr, &end, *length);
@@
-852,18
+853,34
@@
memcached_protocol_event_t memcached_ascii_protocol_process_data(memcached_proto
process_arithmetic(client, tokens, ntokens);
break;
case STATS_CMD:
process_arithmetic(client, tokens, ntokens);
break;
case STATS_CMD:
- recover_tokenize_command(ptr, end);
- process_stats(client, ptr + 6, end);
+ if (client->mute)
+ {
+ send_command_usage(client);
+ }
+ else
+ {
+ recover_tokenize_command(ptr, end);
+ process_stats(client, ptr + 6, end);
+ }
break;
case FLUSH_ALL_CMD:
process_flush(client, tokens, ntokens);
break;
case VERSION_CMD:
break;
case FLUSH_ALL_CMD:
process_flush(client, tokens, ntokens);
break;
case VERSION_CMD:
- process_version(client, tokens, ntokens);
+ if (client->mute)
+ {
+ send_command_usage(client);
+ }
+ else
+ {
+ process_version(client, tokens, ntokens);
+ }
break;
case QUIT_CMD:
break;
case QUIT_CMD:
- if (ntokens != 1)
+ if (ntokens != 1 || client->mute)
+ {
send_command_usage(client);
send_command_usage(client);
+ }
else
{
if (client->root->callback->interface.v1.quit != NULL)
else
{
if (client->root->callback->interface.v1.quit != NULL)