mirror of
https://github.com/g4klx/DMRGateway
synced 2025-12-22 14:16:08 +08:00
modified for new UDPSocket.cpp
This commit is contained in:
@@ -58,8 +58,6 @@ m_beacon(false)
|
|||||||
assert(version != NULL);
|
assert(version != NULL);
|
||||||
|
|
||||||
CUDPSocket::lookup(address, port, m_address, m_addrlen);
|
CUDPSocket::lookup(address, port, m_address, m_addrlen);
|
||||||
CUDPSocket temp(m_address.ss_family == AF_INET ? "0.0.0.0" : "::", port);
|
|
||||||
m_socket = temp; // INADDR_ANY or IN6ADDR_ANY_INIT
|
|
||||||
|
|
||||||
m_buffer = new unsigned char[BUFFER_LENGTH];
|
m_buffer = new unsigned char[BUFFER_LENGTH];
|
||||||
m_salt = new unsigned char[sizeof(uint32_t)];
|
m_salt = new unsigned char[sizeof(uint32_t)];
|
||||||
@@ -305,7 +303,7 @@ void CDMRNetwork::clock(unsigned int ms)
|
|||||||
if (m_status == WAITING_CONNECT) {
|
if (m_status == WAITING_CONNECT) {
|
||||||
m_retryTimer.clock(ms);
|
m_retryTimer.clock(ms);
|
||||||
if (m_retryTimer.isRunning() && m_retryTimer.hasExpired()) {
|
if (m_retryTimer.isRunning() && m_retryTimer.hasExpired()) {
|
||||||
bool ret = m_socket.open();
|
bool ret = m_socket.open(m_address.ss_family);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ret = writeLogin();
|
ret = writeLogin();
|
||||||
if (!ret)
|
if (!ret)
|
||||||
@@ -334,28 +332,7 @@ void CDMRNetwork::clock(unsigned int ms)
|
|||||||
// if (m_debug && length > 0)
|
// if (m_debug && length > 0)
|
||||||
// CUtils::dump(1U, "Network Received", m_buffer, length);
|
// CUtils::dump(1U, "Network Received", m_buffer, length);
|
||||||
|
|
||||||
int valid_addr;
|
if (length > 0 && CUDPSocket::match(m_address, address)) {
|
||||||
switch (address.ss_family) {
|
|
||||||
case AF_INET:
|
|
||||||
struct sockaddr_in *pi4, *pm4;
|
|
||||||
pi4 = (struct sockaddr_in *)&address;
|
|
||||||
pm4 = (struct sockaddr_in *)&m_address;
|
|
||||||
valid_addr = ((pi4->sin_addr.s_addr == pm4->sin_addr.s_addr) &&
|
|
||||||
(pi4->sin_port == pm4->sin_port));
|
|
||||||
break;
|
|
||||||
case AF_INET6:
|
|
||||||
struct sockaddr_in6 *pi6, *pm6;
|
|
||||||
pi6 = (struct sockaddr_in6 *)&address;
|
|
||||||
pm6 = (struct sockaddr_in6 *)&m_address;
|
|
||||||
valid_addr = (!::memcmp(pi6->sin6_addr.s6_addr, pm6->sin6_addr.s6_addr, sizeof(in6_addr)) &&
|
|
||||||
(pi6->sin6_port == pm6->sin6_port));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
valid_addr = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (length > 0 && valid_addr) {
|
|
||||||
if (::memcmp(m_buffer, "DMRD", 4U) == 0) {
|
if (::memcmp(m_buffer, "DMRD", 4U) == 0) {
|
||||||
if (m_debug)
|
if (m_debug)
|
||||||
CUtils::dump(1U, "Network Received", m_buffer, length);
|
CUtils::dump(1U, "Network Received", m_buffer, length);
|
||||||
|
|||||||
Reference in New Issue
Block a user