Browse Source

fix udp_netsettings

balbekova 8 years ago
parent
commit
b409e89cdd
1 changed files with 14 additions and 6 deletions
  1. 14 6
      modules/Ethernet/udp_netsetting.c

+ 14 - 6
modules/Ethernet/udp_netsetting.c

@@ -140,17 +140,24 @@ void udp_recieve_parser(char *buf, u16_t rcvlen)
   const uint8_t len = 100;
   char value[100];
   char str[100];
+  char work_buf[DATA_BUF_LEN1];
 
   memset(str, 0, 100);
 
- // ClearParamString(buf);
+  memset(work_buf, 0, DATA_BUF_LEN1);
+
+  //ClearParamString(buf);
 
   memset(value, 0, len);
   memset(str, 0, len);
+  if(rcvlen < (DATA_BUF_LEN1 - 1))
+	  strncpy(work_buf, buf, rcvlen);
+  else
+	  strncpy(work_buf, buf, (DATA_BUF_LEN1 - 1));
 
   DBG buf[rcvlen]='\0';
   DBG printf("Rcvd (%d bytes): \t%s\r\n", rcvlen, buf);
-  GetUDPParamValue(buf, "\"serno\"", value, &valueLen);
+  GetUDPParamValue(work_buf, "\"serno\"", value, &valueLen);
   if(valueLen != 0)
 	  GetSerialNumberStr(str, &len2);
   else
@@ -160,11 +167,11 @@ void udp_recieve_parser(char *buf, u16_t rcvlen)
   {
 	  memset(str, 0, len);
 
-	  GetUDPParamValue(buf, "\"dhcp\"", str, &valueLen);
+	  GetUDPParamValue(work_buf, "\"dhcp\"", str, &valueLen);
 
 	 // memset(str, 0, len);
 	  memset(value, 0, len);
-	  GetUDPParamValue(buf, "\"ipaddress\"", value, &valueLen);
+	  GetUDPParamValue(work_buf, "\"ipaddress\"", value, &valueLen);
 	  if(valueLen != 0)
 	  {
 		  SetUDPDhcpStateStr(str);
@@ -179,12 +186,12 @@ void udp_recieve_parser(char *buf, u16_t rcvlen)
 	  {
 		  memset(value, 0, len);
 
-		  GetUDPParamValue(buf, "\"gateway\"", value, &valueLen);
+		  GetUDPParamValue(work_buf, "\"gateway\"", value, &valueLen);
 		  if(valueLen != 0)
 			  SetGatewayStr(value);
 		  memset(value, 0, len);
 
-		  GetUDPParamValue(buf, "\"mask\"", value, &valueLen);
+		  GetUDPParamValue(work_buf, "\"mask\"", value, &valueLen);
 		  if(valueLen != 0)
 			  SetMaskStr(value);
 		  memset(value, 0, len);
@@ -223,6 +230,7 @@ bool http_server_serve(struct netconn *conn)
     if (res == ERR_OK)
     {
         netbuf_data(inbuf, (void**)&buf, &buflen);
+        //buf[buflen] = 0;
         udp_recieve_parser(buf, buflen);
         flag = true;
         netbuf_delete(inbuf);