|
|
|
|
@ -111,7 +111,7 @@ int mf_decode(const uint8_t* p, size_t n, struct mf_message* m) {
|
|
|
|
|
m->type = p[117]; m->more = p[118]; m->data_len = (uint32_t)d; |
|
|
|
|
memcpy(m->path, p + MF_WIRE_HEADER, a); memcpy(m->target, p + MF_WIRE_HEADER + a, b); |
|
|
|
|
memcpy(m->data, p + MF_WIRE_HEADER + a + b, d); |
|
|
|
|
if (!m->request_id || m->status > MF_TIMEOUT || (m->kind == MF_REQUEST && m->status)) goto bad; |
|
|
|
|
if (!m->request_id || m->status > MF_DIRECTORY_NOT_EMPTY || (m->kind == MF_REQUEST && m->status)) goto bad; |
|
|
|
|
return 0; |
|
|
|
|
bad: |
|
|
|
|
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "member_files: malformed wire packet bytes=%zu", n); |
|
|
|
|
@ -120,8 +120,9 @@ bad:
|
|
|
|
|
|
|
|
|
|
const char* mf_status_text(int status) { |
|
|
|
|
static const char* texts[] = { "OK", "Access denied", "Not found", "Invalid path", "Invalid range", "Already exists", |
|
|
|
|
"Busy", "File changed", "Storage full", "I/O error", "Invalid packet", "Hash mismatch", "Cancelled", "Timeout" }; |
|
|
|
|
return status >= 0 && status <= MF_TIMEOUT ? texts[status] : "Unknown error"; |
|
|
|
|
"Busy", "File changed", "Storage full", "I/O error", "Invalid packet", "Hash mismatch", "Cancelled", "Timeout", |
|
|
|
|
"Directory not empty" }; |
|
|
|
|
return status >= 0 && status <= MF_DIRECTORY_NOT_EMPTY ? texts[status] : "Unknown error"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const char* mf_command_text(int command) { |
|
|
|
|
|