56
58
return gearman_error(_universal, GEARMAN_INVALID_COMMAND, "Wrong command sent in response to ECHO request");
59
if (con->_packet.data_size != _workload_size or
60
memcmp(_workload, con->_packet.data, _workload_size))
62
return gearman_error(_universal, GEARMAN_ECHO_DATA_CORRUPTION, "corruption during echo");
61
size_t compared= std::min(con->_packet.size(), _workload_size);
63
if (compared != _workload_size or compared != con->_packet.size())
65
// If the workload_size is smaller
66
if (memcmp(_workload, con->_packet.value(), compared) == 0)
68
return gearman_universal_set_error(_universal, GEARMAN_ECHO_DATA_CORRUPTION, GEARMAN_AT,
69
"Truncation occured, Expected %u, received %u",
70
uint32_t(_workload_size), uint32_t(con->_packet.data_size));
73
return gearman_universal_set_error(_universal, GEARMAN_ECHO_DATA_CORRUPTION, GEARMAN_AT,
74
"Expected data was not received, expected %u, received %u",
75
uint32_t(_workload_size), uint32_t(con->_packet.data_size));
77
assert(compared == _workload_size);
79
if (memcmp(_workload, con->_packet.value(), compared))
81
return gearman_universal_set_error(_universal, GEARMAN_ECHO_DATA_CORRUPTION, GEARMAN_AT,
82
"Data sent was not what was received %u == %u == %u",
83
uint32_t(_workload_size), uint32_t(con->_packet.data_size), uint32_t(compared));
65
86
return GEARMAN_SUCCESS;