refactoring.

master
Nicolas Favre-Felix 14 years ago
parent 1d4366df34
commit 6a1eae43f9

@ -266,8 +266,6 @@ http_on_complete(http_parser *p) {
struct http_client *c = p->data;
int ret = -1;
c->state = CLIENT_EXECUTING;
/* check that the command can be executed */
switch(c->verb) {
case HTTP_GET:
@ -402,31 +400,17 @@ http_send_reply(struct http_client *c, short code, const char *msg,
http_response_set_body(&resp, body, body_len);
/* flush response in the socket */
if(http_response_write(&resp, c->fd)) { /* failure */
http_client_free(c);
} else {
switch(c->state) {
case CLIENT_WAITING:
if(!http_client_keep_alive(c)) {
c->state = CLIENT_BROKEN;
}
http_client_reset(c);
http_client_serve(c);
break;
case CLIENT_EXECUTING:
if(!http_client_keep_alive(c)) {
http_client_free(c);
} else {
http_client_reset(c);
http_client_serve(c);
}
break;
default:
break;
if(http_response_write(&resp, c->fd) || !http_client_keep_alive(c)) { /* failure */
if(c->state == CLIENT_EXECUTING) {
http_client_free(c);
return;
} else if(c->state == CLIENT_WAITING) {
c->state = CLIENT_BROKEN;
}
} else {
http_client_reset(c);
}
http_client_serve(c);
}
void

@ -131,6 +131,7 @@ cmd_run(struct server *s, struct http_client *client,
/* no args (e.g. INFO command) */
if(!slash) {
client->state = CLIENT_EXECUTING;
redisAsyncCommandArgv(s->ac, f_format, client, 1, cmd->argv, cmd->argv_len);
return 0;
}
@ -159,6 +160,7 @@ cmd_run(struct server *s, struct http_client *client,
}
/* push command to Redis. */
client->state = CLIENT_EXECUTING;
redisAsyncCommandArgv(s->ac, f_format, client, cmd->count, cmd->argv, cmd->argv_len);
for(i = 1; i < cur_param; ++i) {

@ -68,7 +68,7 @@ format_send_reply(struct http_client *client, const char *p, size_t sz, const ch
}
/* cleanup */
if(free_cmd) {
cmd_free(client->cmd);
cmd_free(cmd);
}
}

Loading…
Cancel
Save