Skip to content

Commit

Permalink
FIX: Modify mismatched error types when get_item_info failed
Browse files Browse the repository at this point in the history
  • Loading branch information
ing-eoking committed Mar 5, 2024
1 parent e4dc39e commit 44398a1
Showing 1 changed file with 46 additions and 48 deletions.
94 changes: 46 additions & 48 deletions memcached.c
Original file line number Diff line number Diff line change
Expand Up @@ -3212,17 +3212,12 @@ static void complete_update_ascii(conn *c)
}

item *it = c->item;
ENGINE_ERROR_CODE ret;
if (!mc_engine.v1->get_item_info(mc_engine.v0, c, it, &c->hinfo)) {
mc_engine.v1->release(mc_engine.v0, c, it);
mc_logger->log(EXTENSION_LOG_WARNING, c,
"%d: Failed to get item info\n", c->sfd);
out_string(c, "SERVER_ERROR failed to get item details");
return;
}

ENGINE_ERROR_CODE ret;
if (hinfo_check_ascii_tail_string(&c->hinfo) != 0) { /* check "\r\n" */
out_string(c, "CLIENT_ERROR bad data chunk");
ret = ENGINE_ENOMEM;
} else if (hinfo_check_ascii_tail_string(&c->hinfo) != 0) { /* check "\r\n" */
ret = ENGINE_EBADVALUE;
} else {
ret = mc_engine.v1->store(mc_engine.v0, c, it, &c->cas, c->store_op, 0);
Expand Down Expand Up @@ -3254,47 +3249,50 @@ static void complete_update_ascii(conn *c)
break;
}
#endif
}

switch (ret) {
case ENGINE_SUCCESS:
out_string(c, "STORED");
break;
case ENGINE_KEY_EEXISTS:
out_string(c, "EXISTS");
break;
case ENGINE_KEY_ENOENT:
out_string(c, "NOT_FOUND");
break;
case ENGINE_NOT_STORED:
out_string(c, "NOT_STORED");
break;
case ENGINE_PREFIX_ENAME:
out_string(c, "CLIENT_ERROR invalid prefix name");
break;
case ENGINE_ENOMEM:
out_string(c, "SERVER_ERROR out of memory");
break;
case ENGINE_EINVAL:
out_string(c, "CLIENT_ERROR invalid arguments");
break;
case ENGINE_E2BIG:
out_string(c, "CLIENT_ERROR value too big");
break;
case ENGINE_EACCESS:
out_string(c, "CLIENT_ERROR access control violation");
break;
case ENGINE_NOT_MY_VBUCKET:
out_string(c, "SERVER_ERROR not my vbucket");
break;
case ENGINE_EBADTYPE:
out_string(c, "TYPE_MISMATCH");
break;
case ENGINE_FAILED:
out_string(c, "SERVER_ERROR failure");
break;
default:
handle_unexpected_errorcode_ascii(c, __func__, ret);
}
switch (ret) {
case ENGINE_SUCCESS:
out_string(c, "STORED");
break;
case ENGINE_KEY_EEXISTS:
out_string(c, "EXISTS");
break;
case ENGINE_KEY_ENOENT:
out_string(c, "NOT_FOUND");
break;
case ENGINE_NOT_STORED:
out_string(c, "NOT_STORED");
break;
case ENGINE_PREFIX_ENAME:
out_string(c, "CLIENT_ERROR invalid prefix name");
break;
case ENGINE_ENOMEM:
out_string(c, "SERVER_ERROR out of memory");
break;
case ENGINE_EINVAL:
out_string(c, "CLIENT_ERROR invalid arguments");
break;
case ENGINE_E2BIG:
out_string(c, "CLIENT_ERROR value too big");
break;
case ENGINE_EACCESS:
out_string(c, "CLIENT_ERROR access control violation");
break;
case ENGINE_NOT_MY_VBUCKET:
out_string(c, "SERVER_ERROR not my vbucket");
break;
case ENGINE_EBADTYPE:
out_string(c, "TYPE_MISMATCH");
break;
case ENGINE_EBADVALUE:
out_string(c, "CLIENT_ERROR bad data chunk");
break;
case ENGINE_FAILED:
out_string(c, "SERVER_ERROR failure");
break;
default:
handle_unexpected_errorcode_ascii(c, __func__, ret);
}

if (c->store_op == OPERATION_CAS) {
Expand Down

0 comments on commit 44398a1

Please sign in to comment.