From ae12a9ee5220b7673ea98387578a7abfbd209854 Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Sun, 18 Mar 2012 14:33:13 -0500 Subject: [PATCH] C++ style copy and set --- src/processors/hybi_legacy.hpp | 12 ++++++++---- src/websocket_frame.hpp | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/processors/hybi_legacy.hpp b/src/processors/hybi_legacy.hpp index b7cf6c6e41..89bdcf245d 100644 --- a/src/processors/hybi_legacy.hpp +++ b/src/processors/hybi_legacy.hpp @@ -68,8 +68,10 @@ public: decode_client_key(request.header("Sec-WebSocket-Key2"), &key_final[4]); // copy key3 into final key - memcpy(&key_final[8],request.header("Sec-WebSocket-Key3").c_str(),8); - + std::copy(request.header("Sec-WebSocket-Key3").c_str(), + request.header("Sec-WebSocket-Key3").c_str()+8, + &key_final[8]); + m_key3 = md5_hash_string(std::string(key_final,16)); response.add_header("Upgrade","websocket"); @@ -307,9 +309,11 @@ private: num = atoi(digits.c_str()); if (spaces > 0 && num > 0) { num = htonl(num/spaces); - memcpy(result, reinterpret_cast(&num), 4); + std::copy(reinterpret_cast(&num), + reinterpret_cast(&num)+4, + result); } else { - memset(result, 0, 4); + std::fill(result,result+4,0); } } diff --git a/src/websocket_frame.hpp b/src/websocket_frame.hpp index f41d7623b4..82ecb42d4f 100644 --- a/src/websocket_frame.hpp +++ b/src/websocket_frame.hpp @@ -106,7 +106,7 @@ public: m_bytes_needed = BASIC_HEADER_LENGTH; m_degraded = false; m_payload.clear(); - memset(m_header,0,MAX_HEADER_LENGTH); + std::fill(m_header,m_header+MAX_HEADER_LENGTH,0); } // Method invariant: One of the following must always be true even in the case @@ -337,7 +337,7 @@ public: char val[2] = { m_payload[0], m_payload[1] }; uint16_t code; - memcpy(&code, val, sizeof(code)); + std::copy(val,val+sizeof(code),&code); code = ntohs(code); return close::status::value(code);