aboutsummaryrefslogtreecommitdiff
path: root/firmwares/wifishield/wifiHD/src/ard_utils.c
diff options
context:
space:
mode:
authorMimmo La Fauci <mlafauci@metodo2.it>2013-03-17 19:23:16 +0100
committerMimmo La Fauci <mlafauci@metodo2.it>2013-03-17 19:23:16 +0100
commitf0ba738a71ec8dafe4705ddd02c07a2eb880655c (patch)
tree3f96a7b5885a043655823fdf6de0cf8832a9fc1f /firmwares/wifishield/wifiHD/src/ard_utils.c
parent9f77c8351090723410e126f63f7fbcb9b0875ce6 (diff)
Fix issue related to multiple client opened on web server sketch
Diffstat (limited to 'firmwares/wifishield/wifiHD/src/ard_utils.c')
-rw-r--r--firmwares/wifishield/wifiHD/src/ard_utils.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/firmwares/wifishield/wifiHD/src/ard_utils.c b/firmwares/wifishield/wifiHD/src/ard_utils.c
index 7bff763..c2937d8 100644
--- a/firmwares/wifishield/wifiHD/src/ard_utils.c
+++ b/firmwares/wifishield/wifiHD/src/ard_utils.c
@@ -181,7 +181,8 @@ void dumpPbuf(uint8_t sock)
do {
if (pBufStore[index][sock].data != NULL)
{
- printk("Buf: %p Len:%d\n", pBufStore[index][sock].data, pBufStore[index][sock].len);
+ printk("%d] pcb:%p Buf: %p Len:%d\n", pBufStore[index][sock].idx, pBufStore[index][sock].pcb,
+ pBufStore[index][sock].data, pBufStore[index][sock].len);
}
++index;
if (index == MAX_PBUF_STORED)
@@ -247,7 +248,7 @@ void ack_recved(void* pcb, int len);
void ackAndFreeData(void* pcb, int len, uint8_t sock, uint8_t* data)
{
- INFO_UTIL("Ack pcb:%p len:%d sock:%d data:%p\n", pcb, len, sock, data);
+ INFO_TCP("Ack pcb:%p len:%d sock:%d data:%p\n", pcb, len, sock, data);
if (!IS_UDP_SOCK(sock))
ack_recved(pcb, len);
if (data != NULL)
@@ -278,7 +279,7 @@ bool isAvailTcpDataByte(uint8_t sock)
uint16_t getAvailTcpDataByte(uint8_t sock)
{
uint16_t len = calcMergeLen(sock);
- INFO_UTIL("Availabled data: %d\n", len);
+ INFO_UTIL_VER("Availabled data: %d\n", len);
return len;
}
@@ -298,6 +299,8 @@ bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek)
else
*payload = buf[p->idx++];
INFO_UTIL_VER("get:%d %p %d\n",p->idx, p->data, *payload);
+ if (p->idx == p->len)
+ ackAndFreeData(p->pcb, p->len, sock, p->data);
return true;
}else{
ackAndFreeData(p->pcb, p->len, sock, p->data);