Skip to content

Commit

Permalink
Add sendContent overload that takes a const char* and a length (#4276)
Browse files Browse the repository at this point in the history
The web server currently lacks the ability to send a buffer. Only strings are supported.

This PR adds an overload to sendContent.
  • Loading branch information
nikeee authored Nov 2, 2020
1 parent 3054bdf commit f57c367
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
11 changes: 7 additions & 4 deletions libraries/WebServer/src/WebServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -463,20 +463,23 @@ void WebServer::send(int code, const String& content_type, const String& content
}

void WebServer::sendContent(const String& content) {
sendContent(content.c_str(), content.length());
}

void WebServer::sendContent(const char* content, size_t contentLength) {
const char * footer = "\r\n";
size_t len = content.length();
if(_chunked) {
char * chunkSize = (char *)malloc(11);
if(chunkSize){
sprintf(chunkSize, "%x%s", len, footer);
sprintf(chunkSize, "%x%s", contentLength, footer);
_currentClientWrite(chunkSize, strlen(chunkSize));
free(chunkSize);
}
}
_currentClientWrite(content.c_str(), len);
_currentClientWrite(content, contentLength);
if(_chunked){
_currentClient.write(footer, 2);
if (len == 0) {
if (contentLength == 0) {
_chunked = false;
}
}
Expand Down
1 change: 1 addition & 0 deletions libraries/WebServer/src/WebServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ class WebServer
void setContentLength(const size_t contentLength);
void sendHeader(const String& name, const String& value, bool first = false);
void sendContent(const String& content);
void sendContent(const char* content, size_t contentLength);
void sendContent_P(PGM_P content);
void sendContent_P(PGM_P content, size_t size);

Expand Down

0 comments on commit f57c367

Please sign in to comment.