From d5d2f5f391ec0c1fb961e93486c77a05d90cf5a4 Mon Sep 17 00:00:00 2001 From: stefanocasazza Date: Fri, 22 Jun 2018 17:08:11 +0200 Subject: [PATCH] sync --- src/ulib/base/zip/inflate.c | 2 + src/ulib/net/server/plugin/usp/update.usp | 46 +++++++++---------- .../net/server/plugin/usp/usp_translator.cpp | 7 ++- src/ulib/orm/driver/orm_driver_sqlite.cpp | 2 +- src/ulib/utility/uhttp.cpp | 17 ++++--- tests/examples/TSA/tsaserial | 2 +- .../FrameworkBenchmarks/ULib/src/update.usp | 46 +++++++++---------- 7 files changed, 64 insertions(+), 58 deletions(-) diff --git a/src/ulib/base/zip/inflate.c b/src/ulib/base/zip/inflate.c index 11edbbf3..6fbc1d48 100644 --- a/src/ulib/base/zip/inflate.c +++ b/src/ulib/base/zip/inflate.c @@ -9,6 +9,8 @@ #include #include +#include + static z_stream zs; int init_compression(void) diff --git a/src/ulib/net/server/plugin/usp/update.usp b/src/ulib/net/server/plugin/usp/update.usp index 7192d6ae..3ab716cb 100644 --- a/src/ulib/net/server/plugin/usp/update.usp +++ b/src/ulib/net/server/plugin/usp/update.usp @@ -51,36 +51,36 @@ if (UOrmDriver::isAsyncPipelineModeAvaliable() == false) } World::endResult(); - - return; } - -(void) World::pstmt_query->asyncPipelineMode(World::handlerResult); - -pquery = query + U_CONSTANT_SIZE("UPDATE World SET randomNumber = v.randomNumber FROM (VALUES"); - -for (i = 0; i < num_queries; ++i) +else { - *pquery++ = '('; + (void) World::pstmt_query->asyncPipelineMode(World::handlerResult); - pquery = u_num2str32(World::pworld_query->id = World::rnumber[i], pquery); + pquery = query + U_CONSTANT_SIZE("UPDATE World SET randomNumber = v.randomNumber FROM (VALUES"); - (void) World::pstmt_query->asyncPipelineSendQueryPrepared(i); + for (i = 0; i < num_queries; ++i) + { + *pquery++ = '('; - *pquery++ = ','; + pquery = u_num2str32(World::pworld_query->id = World::rnumber[i], pquery); - pquery = u_num2str32(World::pworld_query->randomNumber = u_get_num_random(10000-1), pquery); + (void) World::pstmt_query->asyncPipelineSendQueryPrepared(i); - u_put_unalignedp16(pquery, U_MULTICHAR_CONSTANT16(')',',')); - pquery += 2; + *pquery++ = ','; - World::handlerResultSql(i); + pquery = u_num2str32(World::pworld_query->randomNumber = u_get_num_random(10000-1), pquery); + + u_put_unalignedp16(pquery, U_MULTICHAR_CONSTANT16(')',',')); + pquery += 2; + + World::handlerResultSql(i); + } + + World::endResult(); + + (void) memcpy(pquery-1, ") AS v (id,randomNumber) WHERE World.id = v.id;", + U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")+1); + + (void) World::pstmt_query->asyncPipelineSendQuery(query, pquery+U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")-1-query, num_queries); } - -World::endResult(); - -(void) memcpy(pquery-1, ") AS v (id,randomNumber) WHERE World.id = v.id;", - U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")+1); - -(void) World::pstmt_query->asyncPipelineSendQuery(query, pquery+U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")-1-query, num_queries); --> diff --git a/src/ulib/net/server/plugin/usp/usp_translator.cpp b/src/ulib/net/server/plugin/usp/usp_translator.cpp index 823ff333..158507be 100644 --- a/src/ulib/net/server/plugin/usp/usp_translator.cpp +++ b/src/ulib/net/server/plugin/usp/usp_translator.cpp @@ -482,10 +482,9 @@ public: (void) http_header.reserve(200U + encoded.size()); (void) http_header.snprintf(U_CONSTANT_TO_PARAM("\n\tU_ASSERT_EQUALS(UClientImage_Base::wbuffer->findEndHeader(),false)" - "\n\tU_http_info.endHeader = %u;%.*s" - "\n\t(void) UClientImage_Base::wbuffer->insert(0, U_CONSTANT_TO_PARAM(%v));\n\t\n"), n, - (bheader ? U_CONSTANT_SIZE("\n\tU_http_usp_flag = 1;\n\t\n") : 0), "\n\tU_http_usp_flag = 1;\n\t\n", - encoded.rep); + "\n\tU_http_info.endHeader = %.*s%u;" + "\n\t(void) UClientImage_Base::wbuffer->insert(0, U_CONSTANT_TO_PARAM(%v));\n\t\n"), + bheader ? U_CONSTANT_SIZE("(uint32_t)-") : 0, "(uint32_t)-", n, encoded.rep); } else if (strncmp(directive, U_CONSTANT_TO_PARAM("number")) == 0) { diff --git a/src/ulib/orm/driver/orm_driver_sqlite.cpp b/src/ulib/orm/driver/orm_driver_sqlite.cpp index 9d24b00e..2f6972f6 100644 --- a/src/ulib/orm/driver/orm_driver_sqlite.cpp +++ b/src/ulib/orm/driver/orm_driver_sqlite.cpp @@ -509,7 +509,7 @@ bool USqliteStatement::setBindResult(UOrmDriver* pdrv) } if (sz > 0) (void) result->pstr->replace(ptr, sz); - else result->pstr->size_adjust(0); + else result->pstr->size_adjust(0U); } break; } diff --git a/src/ulib/utility/uhttp.cpp b/src/ulib/utility/uhttp.cpp index b3209e82..69ba9fa3 100644 --- a/src/ulib/utility/uhttp.cpp +++ b/src/ulib/utility/uhttp.cpp @@ -7334,14 +7334,15 @@ void UHTTP::setDynamicResponse() { U_TRACE_NO_PARAM(1, "UHTTP::setDynamicResponse()") - U_INTERNAL_DUMP("U_http_info.endHeader = %u U_http_content_type_len = %u mime_index(%d) = %C UClientImage_Base::wbuffer(%u) = %V", - U_http_info.endHeader, U_http_content_type_len, mime_index, mime_index, UClientImage_Base::wbuffer->size(), UClientImage_Base::wbuffer->rep) + U_INTERNAL_DUMP("U_http_info.endHeader = %u U_http_content_type_len = %u mime_index(%d) = %C U_http_usp_flag = %u UClientImage_Base::wbuffer(%u) = %V", + U_http_info.endHeader, U_http_content_type_len, mime_index, mime_index, U_http_usp_flag, UClientImage_Base::wbuffer->size(), UClientImage_Base::wbuffer->rep) U_INTERNAL_ASSERT_MAJOR(U_http_info.nResponseCode, 0) char* ptr; const char* pEndHeader; uint32_t clength = UClientImage_Base::wbuffer->size(); + bool bcontent_type = ((int32_t)U_http_info.endHeader < 0); // NB: if false we assume that we don't have a HTTP content-type header... #if !defined(USE_LIBZ) && !defined(USE_LIBBROTLI) bool bcompress = false; @@ -7353,6 +7354,8 @@ void UHTTP::setDynamicResponse() if (U_http_info.endHeader) { + if (bcontent_type) U_http_info.endHeader = -U_http_info.endHeader; + U_INTERNAL_ASSERT(clength >= U_http_info.endHeader) clength -= U_http_info.endHeader; @@ -7363,7 +7366,7 @@ void UHTTP::setDynamicResponse() # if defined(DEBUG) && defined(USE_LIBMAGIC) if (clength > 4 && - U_http_usp_flag == 0) // NB: we assume that we don't have a HTTP content-type header... + bcontent_type == false) // NB: we assume that we don't have a HTTP content-type header... { const char* p = pEndHeader + U_http_info.endHeader; @@ -7421,7 +7424,7 @@ no_response: next: ptr = ext->pend(); - if (U_http_usp_flag == 0) + if (bcontent_type == false) { // NB: we assume that we don't have a HTTP content-type header... @@ -10173,9 +10176,9 @@ bool UHTTP::processCGIOutput(bool cgi_sh_script, bool bheaders) const char* ptr; const char* ptr1; const char* base; - bool http_response; const char* endptr; uint32_t pos, sz, diff; + bool http_response, bcontent_type = false; // NB: if false we assume that we don't have a HTTP content-type header... if (UClientImage_Base::wbuffer->empty() || UClientImage_Base::wbuffer->isWhiteSpace()) @@ -10504,7 +10507,7 @@ loop: if (u_get_unalignedp64(ptr) == U_MULTICHAR_CONSTANT64('e','n','t','-','T','y','p','e')) { - U_http_usp_flag = 1; + bcontent_type = true; ptr += U_CONSTANT_SIZE("ent-Type: "); @@ -10600,6 +10603,8 @@ noparse: if (u_isHTML(endptr)) mime_index = U_html; end: + if (bcontent_type) U_http_info.endHeader = -U_http_info.endHeader; + setDynamicResponse(); U_RETURN(true); diff --git a/tests/examples/TSA/tsaserial b/tests/examples/TSA/tsaserial index 4912ef4e..4c6ecca0 100644 --- a/tests/examples/TSA/tsaserial +++ b/tests/examples/TSA/tsaserial @@ -1 +1 @@ -0118 +0126 diff --git a/tests/examples/benchmark/FrameworkBenchmarks/ULib/src/update.usp b/tests/examples/benchmark/FrameworkBenchmarks/ULib/src/update.usp index 7192d6ae..3ab716cb 100644 --- a/tests/examples/benchmark/FrameworkBenchmarks/ULib/src/update.usp +++ b/tests/examples/benchmark/FrameworkBenchmarks/ULib/src/update.usp @@ -51,36 +51,36 @@ if (UOrmDriver::isAsyncPipelineModeAvaliable() == false) } World::endResult(); - - return; } - -(void) World::pstmt_query->asyncPipelineMode(World::handlerResult); - -pquery = query + U_CONSTANT_SIZE("UPDATE World SET randomNumber = v.randomNumber FROM (VALUES"); - -for (i = 0; i < num_queries; ++i) +else { - *pquery++ = '('; + (void) World::pstmt_query->asyncPipelineMode(World::handlerResult); - pquery = u_num2str32(World::pworld_query->id = World::rnumber[i], pquery); + pquery = query + U_CONSTANT_SIZE("UPDATE World SET randomNumber = v.randomNumber FROM (VALUES"); - (void) World::pstmt_query->asyncPipelineSendQueryPrepared(i); + for (i = 0; i < num_queries; ++i) + { + *pquery++ = '('; - *pquery++ = ','; + pquery = u_num2str32(World::pworld_query->id = World::rnumber[i], pquery); - pquery = u_num2str32(World::pworld_query->randomNumber = u_get_num_random(10000-1), pquery); + (void) World::pstmt_query->asyncPipelineSendQueryPrepared(i); - u_put_unalignedp16(pquery, U_MULTICHAR_CONSTANT16(')',',')); - pquery += 2; + *pquery++ = ','; - World::handlerResultSql(i); + pquery = u_num2str32(World::pworld_query->randomNumber = u_get_num_random(10000-1), pquery); + + u_put_unalignedp16(pquery, U_MULTICHAR_CONSTANT16(')',',')); + pquery += 2; + + World::handlerResultSql(i); + } + + World::endResult(); + + (void) memcpy(pquery-1, ") AS v (id,randomNumber) WHERE World.id = v.id;", + U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")+1); + + (void) World::pstmt_query->asyncPipelineSendQuery(query, pquery+U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")-1-query, num_queries); } - -World::endResult(); - -(void) memcpy(pquery-1, ") AS v (id,randomNumber) WHERE World.id = v.id;", - U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")+1); - -(void) World::pstmt_query->asyncPipelineSendQuery(query, pquery+U_CONSTANT_SIZE(") AS v (id,randomNumber) WHERE World.id = v.id;")-1-query, num_queries); -->