From 7da840db8519dfb702b17b9adebe346801b27acb Mon Sep 17 00:00:00 2001 From: Constantin Papizh <p.const@bk.ru> Date: Wed, 25 Dec 2019 20:39:19 +0300 Subject: [PATCH] Attempt to resolve optional untouching Tun i-face for the same net config --- DapStreamChChainNetSrvVpn.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/DapStreamChChainNetSrvVpn.cpp b/DapStreamChChainNetSrvVpn.cpp index cc069a85..c02463a4 100644 --- a/DapStreamChChainNetSrvVpn.cpp +++ b/DapStreamChChainNetSrvVpn.cpp @@ -371,10 +371,17 @@ void ChChainNetSrvVpn::onPktIn(DapChannelPacket* pkt) quint32 l_addr,l_gw; ::memcpy(&l_addr, pktSF->data,sizeof (l_addr)); ::memcpy(&l_gw, pktSF->data+sizeof (l_addr),sizeof (l_addr)); - m_addr = QHostAddress( ::ntohl(l_addr) ).toString() ; - m_gw = QHostAddress( ::ntohl ( l_gw )).toString() ; - emit netConfigReceived(m_addr,m_gw); - }break; + QString new_addr = QHostAddress( ::ntohl(l_addr) ).toString(); + QString new_gw = QHostAddress( ::ntohl ( l_gw )).toString(); + if (m_addr == new_addr && new_gw == m_gw) { + qDebug() << "Net config is the same, we don't touch Tun"; + emit netConfigReceivedSame(); + } else { + m_addr = new_addr; + m_gw = new_gw; + emit netConfigReceived(m_addr,m_gw); + } + } break; case STREAM_SF_PACKET_OP_CODE_RAW_RECV:{ pkt->unleashData(); // Uleash *data section from pkt object tun->tunWriteData(pktSF); -- GitLab