add support for IPv6 for ParseNetworkAddress
This commit is contained in:
parent
b7df71e596
commit
96777cbab2
1 changed files with 23 additions and 4 deletions
27
src/util.cpp
27
src/util.cpp
|
@ -832,15 +832,34 @@ bool NetworkUtil::ParseNetworkAddress ( QString strAddress,
|
||||||
// init requested host address with invalid address first
|
// init requested host address with invalid address first
|
||||||
HostAddress = CHostAddress();
|
HostAddress = CHostAddress();
|
||||||
|
|
||||||
// parse input address for the type [IP address]:[port number]
|
// parse input address for the type "IP4 address:port number" or
|
||||||
QString strPort = strAddress.section ( ":", 1, 1 );
|
// "[IP6 address]:port number" assuming the syntax is correctly given
|
||||||
|
QStringList slAddress = strAddress.split ( ":" );
|
||||||
|
QString strSep = ":";
|
||||||
|
bool bIsIP6 = false;
|
||||||
|
|
||||||
|
if ( slAddress.count() > 2 )
|
||||||
|
{
|
||||||
|
// IP6 address
|
||||||
|
bIsIP6 = true;
|
||||||
|
strSep = "]:";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString strPort = strAddress.section ( strSep, 1, 1 );
|
||||||
|
|
||||||
if ( !strPort.isEmpty() )
|
if ( !strPort.isEmpty() )
|
||||||
{
|
{
|
||||||
// a colon is present in the address string, try to extract port number
|
// a colon is present in the address string, try to extract port number
|
||||||
iNetPort = strPort.toInt();
|
iNetPort = strPort.toInt();
|
||||||
|
|
||||||
// extract address port before colon (should be actual internet address)
|
// extract address port before separator (should be actual internet address)
|
||||||
strAddress = strAddress.section ( ":", 0, 0 );
|
strAddress = strAddress.section ( strSep, 0, 0 );
|
||||||
|
|
||||||
|
if ( bIsIP6 )
|
||||||
|
{
|
||||||
|
// remove "[" at the beginning
|
||||||
|
strAddress.remove ( 0, 1 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// first try if this is an IP number an can directly applied to QHostAddress
|
// first try if this is an IP number an can directly applied to QHostAddress
|
||||||
|
|
Loading…
Reference in a new issue