Catch exceptions
This commit is contained in:
parent
4ee2861f37
commit
9fc3dcd599
@ -83,12 +83,15 @@ string DecryptImage(string src, string dir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
string dst = "";
|
string dst = "";
|
||||||
if (!dir.empty()) {
|
|
||||||
dst = (dir.back() == '\\' || dir.back() == '/') ? dir : (dir + "/");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
dst += fs::path(src).stem().string() + ext;
|
if (dir.empty()) {
|
||||||
|
dst = fs::path(src).replace_extension(ext).string();
|
||||||
|
} else {
|
||||||
|
dst = (dir.back() == '\\' || dir.back() == '/') ? dir : (dir + "/");
|
||||||
|
dst += fs::path(src).stem().string() + ext;
|
||||||
|
}
|
||||||
|
|
||||||
replace(dst.begin(), dst.end(), '\\', '/');
|
replace(dst.begin(), dst.end(), '\\', '/');
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
LOG_ERROR("Unknow exception.");
|
LOG_ERROR("Unknow exception.");
|
||||||
@ -226,12 +229,14 @@ int DownloadAttach(uint64_t id, string thumb, string extra)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建父目录,由于路径来源于微信,不做检查
|
|
||||||
fs::create_directory(fs::path(save_path).parent_path().string());
|
|
||||||
if (fs::exists(save_path)) { // 不重复下载
|
if (fs::exists(save_path)) { // 不重复下载
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOG_DEBUG("path: {}", save_path);
|
||||||
|
// 创建父目录,由于路径来源于微信,不做检查
|
||||||
|
fs::create_directory(fs::path(save_path).parent_path().string());
|
||||||
|
|
||||||
wstring wsSavePath = String2Wstring(save_path);
|
wstring wsSavePath = String2Wstring(save_path);
|
||||||
wstring wsThumbPath = String2Wstring(thumb_path);
|
wstring wsThumbPath = String2Wstring(thumb_path);
|
||||||
|
|
||||||
|
@ -556,17 +556,20 @@ bool func_get_contact_info(string wxid, uint8_t *out, size_t *len)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool func_decrypt_image(char *src, char *dst, uint8_t *out, size_t *len)
|
bool func_decrypt_image(DecPath dec, uint8_t *out, size_t *len)
|
||||||
{
|
{
|
||||||
Response rsp = Response_init_default;
|
Response rsp = Response_init_default;
|
||||||
rsp.func = Functions_FUNC_DECRYPT_IMAGE;
|
rsp.func = Functions_FUNC_DECRYPT_IMAGE;
|
||||||
rsp.which_msg = Response_str_tag;
|
rsp.which_msg = Response_str_tag;
|
||||||
|
|
||||||
if ((src != nullptr) && (dst != nullptr)) {
|
string src = string(dec.src ? dec.src : "");
|
||||||
|
string dst = string(dec.dst ? dec.dst : "");
|
||||||
|
if (src.empty()) {
|
||||||
|
LOG_ERROR("Empty src path.");
|
||||||
|
rsp.msg.str = (char *)"";
|
||||||
|
} else {
|
||||||
string path = DecryptImage(src, dst);
|
string path = DecryptImage(src, dst);
|
||||||
rsp.msg.str = (char *)path.c_str();
|
rsp.msg.str = (char *)path.c_str();
|
||||||
} else {
|
|
||||||
rsp.msg.str = (char *)"";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pb_ostream_t stream = pb_ostream_from_buffer(out, *len);
|
pb_ostream_t stream = pb_ostream_from_buffer(out, *len);
|
||||||
@ -741,7 +744,7 @@ static bool dispatcher(uint8_t *in, size_t in_len, uint8_t *out, size_t *out_len
|
|||||||
}
|
}
|
||||||
case Functions_FUNC_DECRYPT_IMAGE: {
|
case Functions_FUNC_DECRYPT_IMAGE: {
|
||||||
LOG_DEBUG("[FUNCTIONS_FUNC_DECRYPT_IMAGE]");
|
LOG_DEBUG("[FUNCTIONS_FUNC_DECRYPT_IMAGE]");
|
||||||
ret = func_decrypt_image(req.msg.dec.src, req.msg.dec.dst, out, out_len);
|
ret = func_decrypt_image(req.msg.dec, out, out_len);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Functions_FUNC_ADD_ROOM_MEMBERS: {
|
case Functions_FUNC_ADD_ROOM_MEMBERS: {
|
||||||
@ -792,24 +795,30 @@ static int RunServer()
|
|||||||
LOG_ERROR("nng_recv error: {}", nng_strerror(rv));
|
LOG_ERROR("nng_recv error: {}", nng_strerror(rv));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
|
||||||
// LOG_BUFFER(in, in_len);
|
// LOG_BUFFER(in, in_len);
|
||||||
if (dispatcher(in, in_len, gBuffer, &out_len)) {
|
if (dispatcher(in, in_len, gBuffer, &out_len)) {
|
||||||
LOG_DEBUG("Send data length {}", out_len);
|
LOG_DEBUG("Send data length {}", out_len);
|
||||||
// LOG_BUFFER(gBuffer, out_len);
|
// LOG_BUFFER(gBuffer, out_len);
|
||||||
rv = nng_send(sock, gBuffer, out_len, 0);
|
rv = nng_send(sock, gBuffer, out_len, 0);
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
LOG_ERROR("nng_send: {}", nng_strerror(rv));
|
LOG_ERROR("nng_send: {}", nng_strerror(rv));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Error
|
// Error
|
||||||
LOG_ERROR("Dispatcher failed...");
|
LOG_ERROR("Dispatcher failed...");
|
||||||
rv = nng_send(sock, gBuffer, 0, 0);
|
rv = nng_send(sock, gBuffer, 0, 0);
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
LOG_ERROR("nng_send: {}", nng_strerror(rv));
|
LOG_ERROR("nng_send: {}", nng_strerror(rv));
|
||||||
|
}
|
||||||
|
// break;
|
||||||
}
|
}
|
||||||
// break;
|
} catch (const std::exception &e) {
|
||||||
|
LOG_ERROR(GB2312ToUtf8(e.what()));
|
||||||
|
} catch (...) {
|
||||||
|
LOG_ERROR("Unknow exception.");
|
||||||
}
|
}
|
||||||
nng_free(in, in_len);
|
nng_free(in, in_len);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user