diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-12-20 00:56:45 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-12-20 00:56:45 (GMT) |
commit | 0388c7ac478187ff8d264b6e0275a4c4a43796b9 (patch) | |
tree | 7e62439ebf72b6369ee7b1daa370e6251c06b7e0 /src/uscxml/util | |
parent | 22e22bfd0965e01fea041e053873d352387805f6 (diff) | |
download | uscxml-0388c7ac478187ff8d264b6e0275a4c4a43796b9.zip uscxml-0388c7ac478187ff8d264b6e0275a4c4a43796b9.tar.gz uscxml-0388c7ac478187ff8d264b6e0275a4c4a43796b9.tar.bz2 |
Performance and bugfix for WebSockets
Diffstat (limited to 'src/uscxml/util')
-rw-r--r-- | src/uscxml/util/Base64.h | 5 | ||||
-rw-r--r-- | src/uscxml/util/Base64.hpp | 14 | ||||
-rw-r--r-- | src/uscxml/util/MD5.c | 1 |
3 files changed, 12 insertions, 8 deletions
diff --git a/src/uscxml/util/Base64.h b/src/uscxml/util/Base64.h index 7dfc83c..a07d24e 100644 --- a/src/uscxml/util/Base64.h +++ b/src/uscxml/util/Base64.h @@ -36,9 +36,7 @@ extern "C" { } base64_decodestate; USCXML_API void base64_init_decodestate(base64_decodestate* state_in); - USCXML_API int base64_decode_value(char value_in); - USCXML_API int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in); /// ENDCODE @@ -54,11 +52,8 @@ extern "C" { } base64_encodestate; USCXML_API void base64_init_encodestate(base64_encodestate* state_in); - USCXML_API char base64_encode_value(char value_in); - USCXML_API int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in); - USCXML_API int base64_encode_blockend(char* code_out, base64_encodestate* state_in); #ifdef __cplusplus diff --git a/src/uscxml/util/Base64.hpp b/src/uscxml/util/Base64.hpp index a106a12..e3cbe03 100644 --- a/src/uscxml/util/Base64.hpp +++ b/src/uscxml/util/Base64.hpp @@ -12,7 +12,7 @@ extern "C" { namespace uscxml { -USCXML_API inline std::string base64Encode(const char* data, unsigned int len) { +USCXML_API inline std::string base64Encode(const char* data, unsigned int len, bool withBlockEnd = true) { base64_encodestate* ctx = (base64_encodestate*)malloc(sizeof(base64_encodestate)); base64_init_encodestate(ctx); @@ -22,10 +22,15 @@ USCXML_API inline std::string base64Encode(const char* data, unsigned int len) { * be approximated with this formula: */ + int written = 0; char* out = (char*)malloc(len * 1.4 + 814); - base64_encode_block(data, len, out, ctx); + written += base64_encode_block(data, len, out, ctx); + if (withBlockEnd) { + written += base64_encode_blockend(out + written, ctx); + written--; // drop the newline + } + std::string result(out, written); free(ctx); - std::string result(out); free(out); return result; } @@ -42,5 +47,8 @@ USCXML_API inline std::string base64Decode(const std::string& data) { return result; } +// USCXML_API std::string base64Decode(const std::string& data); +// USCXML_API std::string base64Encode(const char* data, unsigned int len); + } #endif /* end of include guard: BASE64_H_5FKG12HF */ diff --git a/src/uscxml/util/MD5.c b/src/uscxml/util/MD5.c index 1bf05e4..f553c9c 100644 --- a/src/uscxml/util/MD5.c +++ b/src/uscxml/util/MD5.c @@ -52,6 +52,7 @@ */ #include "MD5.h" +#include <string.h> #undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ #ifdef ARCH_IS_BIG_ENDIAN |