lwip cJSON response

OP #4079436
Lesenswert?
• ▲
▼
Guten Abend,

ich habe auf meinem mini DK2 dev board lwip(raw) erfolgreich am laufen.
Jetzt habe ich ein paar Implementierungen vorgenommen welche ueber JSON 
packete angestossen werden.

Bei einem Stress Test verabschiedet sich der microcontroller allerdings 
nach ca 50 requests bei einem 0.5s intervall.

Mir ist aufgefallen dass dies nur passiert wenn ich cJSON verwende. 
Glueck im Unglueck wuerde ich sagen, dass ich lwip ausschliessen kann.

Das hier funktioniert einen Tag lang mit 0.5s intervall:
1
  char *response = "{\"name1\":\"test1\",\"name2\":\"test2\",\"name3\":\"test3\",\"name4\":\"test4\",\"name5\":\"test5\",\"name6\":\"test6\",\"name7\":\"test7\",\"name8\":\"test8\",\"name9\":\"test9\"}\0";
2

3
  tcp_write(tpcb, response, strlen(response), TCP_WRITE_FLAG_COPY);

Das leider nur ca 50 mal (ich denke iwo ein mem leak):
1
  cJSON *json = cJSON_CreateObject();
2
  cJSON_AddStringToObject(json, "name1", "test1");
3
  cJSON_AddStringToObject(json, "name2", "test2");
4
  cJSON_AddStringToObject(json, "name3", "test3");
5
  cJSON_AddStringToObject(json, "name4", "test4");
6
  cJSON_AddStringToObject(json, "name5", "test5");
7
  cJSON_AddStringToObject(json, "name6", "test6");
8
  cJSON_AddStringToObject(json, "name7", "test7");
9
  cJSON_AddStringToObject(json, "name8", "test8");
10
  cJSON_AddStringToObject(json, "name9", "test9");
11

12
  char response[300];
13
  strcpy(&response[0], cJSON_PrintUnformatted(json));
14

15
  cJSON_Delete(json);
16

17
  tcp_write(tpcb, response, strlen(response), TCP_WRITE_FLAG_COPY);

Moeglicherweise mache ich einen Fehler.
Wenn jemand eine Idee hat bitte melden :)

Gruss
Pascal
OP #4080895
Lesenswert?
• ▲
▼
Hey

vielen Dank ;)

habe das gerade mal umgesetzt. Es scheint jetzt stabil zu laufen.
Dachte eigentlich cJSON_Delete raeumt das alles auf. Anscheinend nicht 
so :)

1
  cJSON *json = cJSON_CreateObject();
2
  cJSON_AddStringToObject(json, "name1", "test1");
3
  cJSON_AddStringToObject(json, "name2", "test2");
4
  cJSON_AddStringToObject(json, "name3", "test3");
5
  cJSON_AddStringToObject(json, "name4", "test4");
6
  cJSON_AddStringToObject(json, "name5", "test5");
7
  cJSON_AddStringToObject(json, "name6", "test6");
8
  cJSON_AddStringToObject(json, "name7", "test7");
9
  cJSON_AddStringToObject(json, "name8", "test8");
10
  cJSON_AddStringToObject(json, "name9", "test9");
11

12
  char *response = cJSON_PrintUnformatted(json);
13

14
  cJSON_Delete(json);
15

16
  tcp_write(tpcb, response, strlen(response), TCP_WRITE_FLAG_COPY);
17
  
18
  tcp_recved(tpcb, p->tot_len);
19

20
  free(response);
21
  pbuf_free(p);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren