I am trying to create a server on my device that communicates with HTTP over port 8000 using the code with these configurations as follows for vNetworkConfigurationTask
```
Clock_Params_init(&instanceParams);
instanceParams.startFlag = STD_TRUE;
instanceParams.period = 100;
(void)Clock_create(llTimerTick, instanceParams.period, &instanceParams, NULL);
NC_SystemOpen((INT32S)NC_PRIORITY_LOW, (INT32S)NC_OPMODE_INTERRUPT);
hCfgIpAddr = CfgNew();
Web_vAddFiles();
/* Setup manual IP address */
CfgAddEntry(hCfgIpAddr, CFGTAG_SYSINFO, CFGITEM_DHCP_HOSTNAME, 0U, (INT32S)strlen(s8HostNameArray), (INT8U *)(s8HostNameArray), STD_NULL);
bzero(&objstrIPNetType, sizeof(objstrIPNetType));
CfgAddEntry(hCfgIpAddr, CFGTAG_IPNET, (INT32U)1, 0U, (INT32S)sizeof(CI_IPNET), (INT8U *)&objstrIPNetType, STD_NULL);
CfgAddEntry(hCfgIpAddr, CFGTAG_ROUTE, 0U, 0U, (INT32S)sizeof(CI_ROUTE), (INT8U *)&objstrRouteType, STD_NULL);
/* Specify HTTP service */
CI_SERVICE_HTTP objstrHTTPServiceType;
bzero(&objstrHTTPServiceType, sizeof(objstrHTTPServiceType));
objstrHTTPServiceType.cisargs.IPAddr = inet_addr("INADDR_ANY");
objstrHTTPServiceType.cisargs.pCbSrv = SoAd_vNetworkStatusChangeHook;
objstrHTTPServiceType.cisargs.IfIdx = 1;
objstrHTTPServiceType.param.MaxCon = 8;
objstrHTTPServiceType.param.Port = 8000;
CfgAddEntry(hCfgIpAddr, \
CFGTAG_SERVICE, \
CFGITEM_SERVICE_HTTP, \
0U,\
(INT32S)sizeof(objstrHTTPServiceType), \
(INT8U *)&objstrHTTPServiceType, \
STD_NULL);
/*init TCP config*/
s32TransmitBufSize = 1024;
(void)CfgAddEntry(hCfgIpAddr, \
CFGTAG_IP, \
CFGITEM_IP_SOCKTCPTXBUF,\
CFG_ADDMODE_UNIQUE, \
(INT32S)sizeof(INT32U), \
(INT8U *)&s32TransmitBufSize, \
STD_NULL);
s32ReceiveBufSize = 1024;
(void)CfgAddEntry(hCfgIpAddr, \
CFGTAG_IP, \
CFGITEM_IP_SOCKTCPRXBUF,\
CFG_ADDMODE_UNIQUE, \
(INT32S)sizeof(INT32U), \
(INT8U *)&s32ReceiveBufSize, \
STD_NULL);
s32ReceiveBufLimit = 2048;
(void)CfgAddEntry(hCfgIpAddr, \
CFGTAG_IP, \
CFGITEM_IP_SOCKTCPRXLIMIT,\
CFG_ADDMODE_UNIQUE, \
(INT32S)sizeof(INT32U), \
(INT8U *)&s32ReceiveBufLimit, \
STD_NULL);
/* add the configuration settings for NDK low-priority tasks stack size. */
s32NewValue = 1200;
(void)CfgAddEntry(hCfgIpAddr, \
CFGTAG_OS, \
CFGITEM_OS_TASKSTKLOW,\
CFG_ADDMODE_UNIQUE, \
(INT32S)sizeof(INT32U), \
(INT8U *)&s32NewValue, \
STD_NULL);
/* add the configuration settings for NDK norm priority tasks stack size. */
s32NewValue = 1024;
(void)CfgAddEntry(hCfgIpAddr, \
CFGTAG_OS, \
CFGITEM_OS_TASKSTKNORM,\
CFG_ADDMODE_UNIQUE, \
(INT32S)sizeof(INT32U), \
(INT8U *)&s32NewValue, \
STD_NULL);
/* add the configuration settings for NDK high priority tasks stack size. */
s32NewValue = 2048;
(void)CfgAddEntry(hCfgIpAddr, \
CFGTAG_OS, \
CFGITEM_OS_TASKSTKHIGH,
CFG_ADDMODE_UNIQUE, \
(INT32S)sizeof(INT32U), \
(INT8U *)&s32NewValue, \
STD_NULL);
do
{
s32ReturnStatus = NC_NetStart(hCfgIpAddr,\
SoAd_vNetworkOpenHook,\
SoAd_vNetworkCloseHook,\
SoAd_vNetworkIPAddressChangeHook);
}while(s32ReturnStatus > 0);
/* call user defined stack delete hook */
Web_vRemoveFiles();
/* Delete Configuration */
CfgFree(hCfgIpAddr);
/* Close the OS */
NC_SystemClose();
```
and added web files add and remove hooks as follows
```
addWebFiles(){
efs_createfile("index.html", INDEX_SIZE, (INT8U *)INDEX);
efs_createfile("Web_u8WebServerCGI.cgi", 0, (INT8U *)Web_u8WebServerCGI);
}
removeWebFiles(){
efs_destroyfile("index.html");
efs_destroyfile("Web_u8WebServerCGI.cgi");
}
```
and set the priorities of NDK tasks as follows
```
Global.lowTaskPriLevel = 8;
Global.normTaskPriLevel = 10;
Global.highTaskPriLevel = 12;
Global.kernTaskPriLevel = 14;
```
and I got an ERROR
net::ERR_INVALID_HTTP_RESPONSE
and I tried to find out why this error appeared so I used Wireshark to list all the traffic between the server(10.1.0.204) my device and client(10.1.0.203) my PC
No. | Time | Source | Destination | Protocol | Length | Info |
4712 | 133.8418 | 10.1.0.203 | 10.1.0.204 | TCP | 66 | 57911 > 8000 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM |
4715 | 133.8427 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [SYN, ACK] Seq=0 Ack=1 Win=1024 Len=0 MSS=1460 |
4716 | 133.8428 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [ACK] Seq=1 Ack=1 Win=64240 Len=0 |
4717 | 133.843 | 10.1.0.203 | 10.1.0.204 | HTTP | 496 | POST /Web_u8WebServerCGI.cgi HTTP/1.1 (text/plain) |
4718 | 133.8447 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [ACK] Seq=1 Ack=443 Win=582 Len=0 |
4719 | 133.948 | 10.1.0.204 | 10.1.0.203 | TCP | 61 | 8000 > 57911 [PSH, ACK] Seq=1 Ack=443 Win=1024 Len=7 [TCP segment of a reassembled PDU] |
4720 | 133.9481 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [PSH, ACK] Seq=8 Ack=443 Win=1024 Len=3 [TCP segment of a reassembled PDU] |
4721 | 133.9482 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [ACK] Seq=443 Ack=11 Win=64230 Len=0 |
4722 | 133.9485 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [PSH, ACK] Seq=11 Ack=443 Win=1024 Len=3 [TCP segment of a reassembled PDU] |
4723 | 133.9485 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [FIN, ACK] Seq=443 Ack=11 Win=64230 Len=0 |
4724 | 133.9485 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [RST, ACK] Seq=444 Ack=14 Win=0 Len=0 |
4725 | 133.9488 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [PSH, ACK] Seq=14 Ack=443 Win=1024 Len=3 [TCP segment of a reassembled PDU] |
4726 | 133.9488 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [RST] Seq=443 Win=0 Len=0 |
4727 | 133.9491 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [PSH, ACK] Seq=17 Ack=443 Win=1024 Len=3 [TCP segment of a reassembled PDU] |
4728 | 133.9491 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [RST] Seq=443 Win=0 Len=0 |
4729 | 133.9493 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [PSH, ACK] Seq=20 Ack=443 Win=1024 Len=3 [TCP segment of a reassembled PDU] |
4730 | 133.9493 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [RST] Seq=443 Win=0 Len=0 |
4731 | 133.9497 | 10.1.0.204 | 10.1.0.203 | TCP | 60 | 8000 > 57911 [PSH, ACK] Seq=23 Ack=443 Win=1024 Len=3 [TCP segment of a reassembled PDU] |
4732 | 133.9497 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [RST] Seq=443 Win=0 Len=0 |
4733 | 133.9604 | 10.1.0.204 | 10.1.0.203 | TCP | 513 | 8000 > 57911 [PSH, ACK] Seq=26 Ack=444 Win=1024 Len=459 [TCP segment of a reassembled PDU] |
4734 | 133.9604 | 10.1.0.203 | 10.1.0.204 | TCP | 54 | 57911 > 8000 [RST] Seq=444 Win=0 Len=0 |
so from this table, I find out that the server continues sending the packets without an acking to the packets sent with the client
also my TI-RTOS version is 2.16.1.14
which used NDK version 2_25_00_09
and I notice that the GET request for the HTML (index.html) is happening successfully with the specified port 8000 but requesting POST /Web_u8WebServerCGI.cgi have an issue
I also notice that the Web_u8WebServerCGI is being called successfully and the response is created and passed to the NDK successfully but this error ERR_INVALID_HTTP_RESPONSE arises and the client is failed to parse the response.
but with port 80 everything is working with no problem
so how can I solve this issue?