1
0
mirror of https://github.com/danog/libtgvoip.git synced 2024-12-03 18:17:45 +01:00

Merge pull request #10 from ali-fareed/tdesktop

A single endpoint should reference both ipv4 and ipv4 IPs
This commit is contained in:
Igor Zhukov 2020-01-23 18:02:00 +04:00 committed by GitHub
commit c5651ffc72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 21 deletions

View File

@ -67,16 +67,6 @@ tgvoip::CryptoFunctions tgvoip::VoIPController::crypto={
tgvoip_openssl_aes_cbc_decrypt tgvoip_openssl_aes_cbc_decrypt
}; };
#else #else
struct TgVoipCrypto {
void (*rand_bytes)(uint8_t* buffer, size_t length);
void (*sha1)(uint8_t* msg, size_t length, uint8_t* output);
void (*sha256)(uint8_t* msg, size_t length, uint8_t* output);
void (*aes_ige_encrypt)(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv);
void (*aes_ige_decrypt)(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv);
void (*aes_ctr_encrypt)(uint8_t* inout, size_t length, uint8_t* key, uint8_t* iv, uint8_t* ecount, uint32_t* num);
void (*aes_cbc_encrypt)(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv);
void (*aes_cbc_decrypt)(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv);
};
tgvoip::CryptoFunctions tgvoip::VoIPController::crypto; // set it yourself upon initialization tgvoip::CryptoFunctions tgvoip::VoIPController::crypto; // set it yourself upon initialization
#endif #endif
@ -135,13 +125,6 @@ public:
std::vector<tgvoip::Endpoint> mappedEndpoints; std::vector<tgvoip::Endpoint> mappedEndpoints;
for (auto endpoint : endpoints) { for (auto endpoint : endpoints) {
bool isIpv6 = false;
#ifndef _WIN32 // #TODO impl
struct in6_addr addrIpV6;
if (inet_pton(AF_INET6, endpoint.host.c_str(), &addrIpV6)) {
isIpv6 = true;
}
#endif
tgvoip::Endpoint::Type mappedType; tgvoip::Endpoint::Type mappedType;
switch (endpoint.type) { switch (endpoint.type) {
case TgVoipEndpointType::UdpRelay: case TgVoipEndpointType::UdpRelay:
@ -161,8 +144,8 @@ public:
break; break;
} }
tgvoip::IPv4Address address(isIpv6 ? std::string() : endpoint.host); tgvoip::IPv4Address address(endpoint.host.ipv4);
tgvoip::IPv6Address addressv6(isIpv6 ? endpoint.host : std::string()); tgvoip::IPv6Address addressv6(endpoint.host.ipv6);
mappedEndpoints.emplace_back(endpoint.endpointId, endpoint.port, address, addressv6, mappedType, endpoint.peerTag); mappedEndpoints.emplace_back(endpoint.endpointId, endpoint.port, address, addressv6, mappedType, endpoint.peerTag);
} }
@ -431,4 +414,4 @@ TgVoip *TgVoip::makeInstance(
); );
} }
TgVoip::~TgVoip() = default; TgVoip::~TgVoip() = default;

View File

@ -20,9 +20,14 @@ enum class TgVoipEndpointType {
TcpRelay TcpRelay
}; };
struct TgVoipEdpointHost {
std::string ipv4;
std::string ipv6;
};
struct TgVoipEndpoint { struct TgVoipEndpoint {
int64_t endpointId; int64_t endpointId;
std::string host; TgVoipEdpointHost host;
uint16_t port; uint16_t port;
TgVoipEndpointType type; TgVoipEndpointType type;
unsigned char peerTag[16]; unsigned char peerTag[16];