static bool dcc_module_normalize_target_data(KviDccRequest * dcc, KviCString & ipaddr, KviCString & port) { if(!port.isUnsignedNum()) { if(!dcc->ctcpMsg->msg->haltOutput()) { QString szError = QString(__tr2qs_ctx("Invalid port number %1", "dcc")).arg(port.ptr()); dcc_module_request_error(dcc, szError); } return false; } struct in_addr addr; if(ipaddr.isUnsignedNum()) { addr.s_addr = htonl((unsigned long)ipaddr.toULong()); QString tmp; if(!KviNetUtils::binaryIpToStringIp(addr, tmp)) { if(!dcc->ctcpMsg->msg->haltOutput()) { QString szError = QString(__tr2qs_ctx("Invalid IP address in old format %1", "dcc")).arg(ipaddr.ptr()); dcc_module_request_error(dcc, szError); } return false; } ipaddr = tmp; } else { //FIXME: KviCString -> QString if(!KviNetUtils::stringIpToBinaryIp(QString(ipaddr), &addr)) { #ifdef COMPILE_IPV6_SUPPORT struct in6_addr addr6; if(KviNetUtils::stringIpToBinaryIp_V6(QString(ipaddr), &addr6)) { dcc->bIPv6 = true; return true; // IPV6 address. } #endif if(!dcc->ctcpMsg->msg->haltOutput()) { QString szError = QString(__tr2qs_ctx("Invalid IP address %1", "dcc")).arg(ipaddr.ptr()); dcc_module_request_error(dcc, szError); } return false; } } return true; }