mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-25 20:02:37 +03:00
Fix sending headers in #send_P(int, PGM_P, PGM_P, size_t) (#6881)
The method #send(int, char*, char*[, size_t])) is a virtual method which calculates the size of the content then calls #send_P(int, PGM_P, PGM_P, size_t). This particular implementation of #send_P differs from the other implementations of #send and #send_P in that it uses #sendContent for headers and always calls #sendContent_P for contents even when the contents is not specified. The method #sendContent is intended for body and prepends the chunksize in chunk mode but this breaks the HTTP protocol which does not expect a chunksize prior to the headers. Fix is simply to do the same thing as all the other methods - call _currentClient.write and only call #sendContent_P if there is content to send.
This commit is contained in:
parent
759ba27b62
commit
70c337001c
@ -464,8 +464,10 @@ void ESP8266WebServerTemplate<ServerType>::send_P(int code, PGM_P content_type,
|
||||
char type[64];
|
||||
memccpy_P((void*)type, (PGM_VOID_P)content_type, 0, sizeof(type));
|
||||
_prepareHeader(header, code, (const char* )type, contentLength);
|
||||
sendContent(header);
|
||||
sendContent_P(content, contentLength);
|
||||
_currentClient.write((const uint8_t *)header.c_str(), header.length());
|
||||
if (contentLength) {
|
||||
sendContent_P(content, contentLength);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename ServerType>
|
||||
|
Loading…
x
Reference in New Issue
Block a user