keepalive handshake: device_type + keepalive negotiation in UDP/TCP INIT
- Добавлен device_type (1 байт, CLIENT_TYPE_*) в INIT_REQUEST и INIT_RESPONSE - Добавлен keepalive_interval (2 байта) в INIT_RESPONSE - STCP handshake расширен с 43 до 46 байт (device_type+keepalive) - negotiate_keepalive(): оба desktop/server → min, иначе (есть mobile) → max - keepalive_interval вынесен в UTUN_INSTANCE для использования в handshake - stcp_client_connect() принимает device_type и keepalive_interval - peer_device_type/peer_keepalive_interval передаются через stcp_link в ETCP_LINK
This commit is contained in:
1 parent
43aca4a41b
commit
0f1bd3d120
37 files changed
+535
-309
No files matched your search
@@ -217,19 +217,20 @@ QList<NodeAddr> UtunNode::getInviteAddresses(DbManager* db) {
|
||||
|
||||
/* 3) TCP from local TCP sockets */
|
||||
{
|
||||
struct ETCP_SOCKET* ts = m_instance->tcp_sockets;
|
||||
while (ts) {
|
||||
struct sockaddr_storage* sa = &ts->interface_addr;
|
||||
struct ETCP_SOCKET* s = m_instance->etcp_sockets;
|
||||
while (s) {
|
||||
if (!s->is_tcp) { s = s->next; continue; }
|
||||
struct sockaddr_storage* sa = &s->interface_addr;
|
||||
if (sa->ss_family == AF_INET) {
|
||||
struct sockaddr_in* sin = (struct sockaddr_in*)sa;
|
||||
QByteArray addr((const char*)&sin->sin_addr, 4);
|
||||
add_addr(addr, ntohs(sin->sin_port), 4, (int)ts->sock_id, INVITE_PROTO_TCP);
|
||||
add_addr(addr, ntohs(sin->sin_port), 4, (int)s->sock_id, INVITE_PROTO_TCP);
|
||||
} else if (sa->ss_family == AF_INET6) {
|
||||
struct sockaddr_in6* sin6 = (struct sockaddr_in6*)sa;
|
||||
QByteArray addr((const char*)&sin6->sin6_addr, 16);
|
||||
add_addr(addr, ntohs(sin6->sin6_port), 6, (int)ts->sock_id, INVITE_PROTO_TCP);
|
||||
add_addr(addr, ntohs(sin6->sin6_port), 6, (int)s->sock_id, INVITE_PROTO_TCP);
|
||||
}
|
||||
ts = ts->next;
|
||||
s = s->next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user