Espressif SDK

Gast #6834859
Lesenswert?
• ▲
▼
Hi,

ich habe aktuell ein Problem bei der Nutzung des Espressif SDK für den 
ESP8266.
Wenn ich versuche, per HTTP Post größere Datenmengen (im konkreten Fall 
ein SSL Zertifikat) zu übertragen, kommen nur Bruchstücke davon an.

Im konkreten Fall ist der Payload im POST-Request ca 2700 Byte groß, 
davon werden nur 896 Byte gelesen.
Es ist auch egal, was im Payload steht, auch mit simplem Text etc werden 
immer nur 896 Byte empfangen.
Das sieht doch nach irgendeinem Buffer aus.
Vielleicht hat ja jemand dieses Problem mit dem Espressif SDK schonmal 
gehabt oder weiss einen anderen Ansatz (chunked ?)

Was ich bis jetzt getestet habe, alles brachte keine Veränderung:

-buf als globale Variable buf[4096] definiert.
Keine Veränderung.

-Durch wiederholtes Aufrufen von httpd_req_recv(req, buf+n*800, 800)
800 Byte Chunks eingelesen. Gleiches Endergebnis

-Im SDK mit make menuconfig mit diversen Buffern ( Task buffer, http 
request buffer) experimentiert und neu compiliert und geflashed.
Keine Veränderung.

Der folgende Code macht das Einlesen:

esp_err_t cfgsav_post_handler(httpd_req_t *req)
{
...
    char* buf;
    size_t buf_len;
    buf_len=req->content_len;
    tcpip_adapter_ip_info_t ip_info;
    tcpip_adapter_dns_info_t dns_info;
    cfg_err = 0;
    if(httpd_basic_auth(req, AUTHUSER, config.station_password) == 
ESP_OK)
        {
        if (buf_len > 1)
            {
            buf = malloc(buf_len);
            ret = httpd_req_recv(req, buf, buf_len);
...

Der komplette Code - derzeit allerdings noch ohne Übertragung der 
Zertifikate - findet sich unter
https://sourceforge.net/projects/wlan-controlled-switch/
Dort unter main/files/server.c

Dieser Code dient zum Einlesen der über Webinterface erstellten 
Konfiguration. Die Zertifikate sind derzeit noch fest in der SW 
hinterlegt und diesen der Server-Validierung für OTA und MQTTs.
Leider unterstützt httpd_req_recv den Typ multipart/form-data nicht, 
ansonsten könnte ich die Zertifikate per <input type=file> direkt aus 
einer Datei hochladen. Daher bin ich auf ein <textarea> Feld zum 
Einfügen der Zertifikate ausgewichen.

Danke & gruß

Tobi

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.