diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index 7f5debadc..306320b49 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -99,6 +99,12 @@ int http_fn_empty_url(http_request_t *request) { +int http_fn_testmsg(http_request_t *request) { + poststr(request,"This is just a test msg\n\n"); + poststr(request, NULL); + return 0; + +} int http_fn_index(http_request_t *request) { int j, i; char tmpA[128]; diff --git a/src/httpserver/http_fns.h b/src/httpserver/http_fns.h index 00aea98ea..337d51e78 100644 --- a/src/httpserver/http_fns.h +++ b/src/httpserver/http_fns.h @@ -22,6 +22,7 @@ int http_fn_cfg(http_request_t *request); int http_fn_cfg_pins(http_request_t *request); int http_fn_cfg_ping(http_request_t *request); int http_fn_index(http_request_t *request); +int http_fn_testmsg(http_request_t *request); int http_fn_ota_exec(http_request_t *request); int http_fn_ota(http_request_t *request); int http_fn_empty_url(http_request_t *request); diff --git a/src/httpserver/http_tcp_server.c b/src/httpserver/http_tcp_server.c index 35bb745cb..b88117302 100644 --- a/src/httpserver/http_tcp_server.c +++ b/src/httpserver/http_tcp_server.c @@ -7,7 +7,7 @@ #include "new_http.h" #define HTTP_SERVER_PORT 80 -#define REPLY_BUFFER_SIZE 10000 +#define REPLY_BUFFER_SIZE 1000 #define INCOMING_BUFFER_SIZE 1024 @@ -96,9 +96,10 @@ static void tcp_client_thread( beken_thread_arg_t arg ) //addLog( "TCP received string %s\n",buf ); // returns length to be sent if any + ADDLOG_DEBUG(LOG_FEATURE_HTTP, "TCP will process packet of len %i\n", request.receivedLen ); int lenret = HTTP_ProcessPacket(&request); if (lenret > 0){ - //ADDLOG_DEBUG(LOG_FEATURE_HTTP, "TCP sending reply len %i\n",lenret ); + ADDLOG_DEBUG(LOG_FEATURE_HTTP, "TCP sending reply len %i\n",lenret ); send( fd, reply, lenret, 0 ); } diff --git a/src/httpserver/new_http.c b/src/httpserver/new_http.c index 7224561e2..72531c8c8 100644 --- a/src/httpserver/new_http.c +++ b/src/httpserver/new_http.c @@ -20,6 +20,7 @@ const char httpMimeTypeText[] = "text/plain" ; // TEXT MIME type const char httpMimeTypeJson[] = "application/json" ; // TEXT MIME type const char httpMimeTypeBinary[] = "application/octet-stream" ; // binary/file MIME type const char htmlHeader[] = "
" ; +//const char htmlHeader[] = "" ; const char htmlEnd[] = "
" ; const char htmlReturnToMenu[] = "Return to menu"; const char htmlRefresh[] = "Refresh"; @@ -337,7 +338,9 @@ int postany(http_request_t *request, const char *str, int len){ int addlen = len; if (NULL == str){ - send(request->fd, request->reply, request->replylen, 0); + if(request->replylen > 0) { + send(request->fd, request->reply, request->replylen, 0); + } request->reply[0] = 0; request->replylen = 0; return 0; @@ -350,12 +353,20 @@ int postany(http_request_t *request, const char *str, int len){ request->replylen = 0; currentlen = 0; } - if (addlen > request->replymaxlen){ - ADDLOGF_ERROR("won't fit"); - } else { - memcpy( request->reply+request->replylen, str, addlen ); - request->replylen += addlen; + while (addlen >= request->replymaxlen){ + if(request->replylen > 0) { + send(request->fd, request->reply, request->replylen, 0); + request->replylen = 0; + } + send(request->fd, str, (request->replymaxlen-1), 0); + addlen -= (request->replymaxlen-1); + str += (request->replymaxlen-1); + + rtos_delay_milliseconds(1); } + + memcpy( request->reply+request->replylen, str, addlen ); + request->replylen += addlen; return (currentlen + addlen); #endif } @@ -405,7 +416,7 @@ void misc_formatUpTimeString(int totalSeconds, char *o) { int hprintf128(http_request_t *request, const char *fmt, ...){ va_list argList; //BaseType_t taken; - char tmp[128]; + char tmp[256]; va_start(argList, fmt); vsprintf(tmp, fmt, argList); va_end(argList); @@ -534,6 +545,7 @@ int HTTP_ProcessPacket(http_request_t *request) { } if(http_checkUrlBase(urlStr,"")) return http_fn_empty_url(request); + if(http_checkUrlBase(urlStr,"testmsg")) return http_fn_testmsg(request); if(http_checkUrlBase(urlStr,"index")) return http_fn_index(request); if(http_checkUrlBase(urlStr,"about")) return http_fn_about(request);