@@ -55,6 +55,7 @@ WiFiSocketClass::WiFiSocketClass()
55
55
_info[i].buffer .data = NULL ;
56
56
_info[i].buffer .head = NULL ;
57
57
_info[i].buffer .length = 0 ;
58
+ memset (&_info[i]._lastSendtoAddr , 0x00 , sizeof (_info[i]._lastSendtoAddr ));
58
59
}
59
60
}
60
61
@@ -322,7 +323,13 @@ sint16 WiFiSocketClass::sendto(SOCKET sock, void *pvSendBuffer, uint16 u16SendLe
322
323
return -1 ;
323
324
}
324
325
325
- return ::sendto (sock, pvSendBuffer, u16SendLength, flags, pstrDestAddr, u8AddrLen);
326
+ if (memcmp (&_info[sock]._lastSendtoAddr , pstrDestAddr, sizeof (_info[sock]._lastSendtoAddr )) != 0 ) {
327
+ memcpy (&_info[sock]._lastSendtoAddr , pstrDestAddr, sizeof (_info[sock]._lastSendtoAddr ));
328
+
329
+ return ::sendto (sock, pvSendBuffer, u16SendLength, flags, pstrDestAddr, u8AddrLen);
330
+ } else {
331
+ return ::send (sock, pvSendBuffer, u16SendLength, 0 );
332
+ }
326
333
}
327
334
328
335
sint8 WiFiSocketClass::close (SOCKET sock)
@@ -348,6 +355,7 @@ sint8 WiFiSocketClass::close(SOCKET sock)
348
355
_info[sock].buffer .head = NULL ;
349
356
_info[sock].buffer .length = 0 ;
350
357
_info[sock].recvMsg .s16BufferSize = 0 ;
358
+ memset (&_info[sock]._lastSendtoAddr , 0x00 , sizeof (_info[sock]._lastSendtoAddr ));
351
359
352
360
return ::close (sock);
353
361
}
0 commit comments