Add sendContent overload that takes a const char* and a length (#4276)
The web server currently lacks the ability to send a buffer. Only strings are supported. This PR adds an overload to sendContent.
This commit is contained in:
		
							parent
							
								
									3054bdf5a5
								
							
						
					
					
						commit
						f57c36782f
					
				| @ -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; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -130,6 +130,7 @@ public: | ||||
|   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); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user