/* Create reply queue element */
reply_elt = g_malloc0(sizeof(*reply_elt));
- reply_elt->rep.size_hdr = htons((uint16_t) len);
+ reply_elt->rep.size_hdr = GUINT16_TO_LE((uint16_t) len);
memcpy(&reply_elt->rep.payload, data, len);
reply_elt->written = 0;
struct fuzzy_tcp_reply_queue_elt *reply)
{
gssize r;
- gsize total_len = sizeof(reply->rep.size_hdr) + ntohs(reply->rep.size_hdr);
+ gsize total_len = sizeof(reply->rep.size_hdr) + GUINT16_FROM_LE(reply->rep.size_hdr);
gsize remaining = total_len - reply->written;
unsigned char *data = ((unsigned char *) &reply->rep) + reply->written;
if (processed_offset < session->bytes_unprocessed) {
uint16_t first_byte = session->cur_frame_state & 0xFF;
uint16_t second_byte = session->input_buf[processed_offset];
- session->cur_frame_state = 0xC000 | ((first_byte << 8) | second_byte);
+ /* Reconstruct in little-endian byte order */
+ session->cur_frame_state = 0xC000 | (first_byte | (second_byte << 8));
processed_offset++;
}
else {
* TCP write queue element - contains framed command ready to send
*/
struct fuzzy_tcp_write_buf {
- uint16_t size_hdr; /* Frame size in network byte order */
+ uint16_t size_hdr; /* Frame size in little-endian byte order */
unsigned char *data; /* Command data (encrypted) */
gsize total_len; /* Total length: sizeof(size_hdr) + data_len */
gsize bytes_written; /* How many bytes already written */