From 4f25e7b10e8ce320c24d1480b32adbaa76ffa917 Mon Sep 17 00:00:00 2001 From: hexia Date: Mon, 24 Aug 2020 15:38:01 +0800 Subject: [PATCH] shape_wrong --- serving/CMakeLists.txt | 1 + serving/core/http_process.cc | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/serving/CMakeLists.txt b/serving/CMakeLists.txt index 8da0288bac..c8974c41c7 100644 --- a/serving/CMakeLists.txt +++ b/serving/CMakeLists.txt @@ -99,6 +99,7 @@ add_executable(ms_serving ${SERVING_SRC}) target_link_libraries(ms_serving mindspore::event mindspore::event_pthreads) target_link_libraries(ms_serving ${_REFLECTION} ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF} pthread) +set_target_properties(ms_serving PROPERTIES POSITION_INDEPENDENT_CODE ON) if (ENABLE_D) add_compile_definitions(ENABLE_D) target_link_libraries(ms_serving ${RUNTIME_LIB}) diff --git a/serving/core/http_process.cc b/serving/core/http_process.cc index 51b2d0a950..7ed6a66769 100644 --- a/serving/core/http_process.cc +++ b/serving/core/http_process.cc @@ -30,7 +30,7 @@ using nlohmann::json; namespace mindspore { namespace serving { -const int BUF_MAX = 0x1FFFFF; +const int BUF_MAX = 0x7FFFFFFF; static constexpr char HTTP_DATA[] = "data"; static constexpr char HTTP_TENSOR[] = "tensor"; enum HTTP_TYPE { TYPE_DATA = 0, TYPE_TENSOR }; @@ -46,10 +46,12 @@ Status GetPostMessage(struct evhttp_request *req, std::string *buf) { if (post_size == 0) { ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message invalid"); return status; + } else if (post_size > BUF_MAX) { + ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message is bigger than 0x7FFFFFFF."); + return status; } else { - size_t copy_len = post_size > BUF_MAX ? BUF_MAX : post_size; - buf->resize(copy_len); - memcpy(buf->data(), evbuffer_pullup(req->input_buffer, -1), copy_len); + buf->resize(post_size); + memcpy(buf->data(), evbuffer_pullup(req->input_buffer, -1), post_size); return status; } } @@ -85,7 +87,7 @@ Status CheckMessageValid(const json &message_info, HTTP_TYPE *type) { count++; } if (count != 1) { - ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message must have only one type of (data, tensor, text)"); + ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message must have only one type of (data, tensor)"); return status; } return status; @@ -206,7 +208,7 @@ Status TransDataToPredictRequest(const json &message_info, PredictRequest *reque } for (int i = 0; i < request->data_size(); i++) { for (size_t j = 0; j < tensor_list[i].shape().size(); ++j) { - request->mutable_data(i)->mutable_tensor_shape()->add_dims(tensor_list[i].shape()[i]); + request->mutable_data(i)->mutable_tensor_shape()->add_dims(tensor_list[i].shape()[j]); } } return SUCCESS;