From 9061677c0ea6af48a40c3fe028cc554341670cff Mon Sep 17 00:00:00 2001 From: myl7 Date: Fri, 17 Dec 2021 08:06:56 +0800 Subject: [PATCH] Update start udp associate method Rename func according to RFC. Fix bad type of return. Update arg type to get bnd addr and port. --- src/DHTConnectionSocksProxyImpl.cc | 4 ++-- src/SocksProxySocket.cc | 16 ++++++++-------- src/SocksProxySocket.h | 5 ++--- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/DHTConnectionSocksProxyImpl.cc b/src/DHTConnectionSocksProxyImpl.cc index e8491e08..16f69b9c 100644 --- a/src/DHTConnectionSocksProxyImpl.cc +++ b/src/DHTConnectionSocksProxyImpl.cc @@ -86,8 +86,8 @@ bool DHTConnectionSocksProxyImpl::startProxy(const std::string& host, } // UDP associate - size_t i = - socket_->startUdpProxy(listenAddr, listenPort, &bndAddr_, &bndPort_); + ssize_t i = socket_->startUdpAssociate(listenAddr, listenPort, + std::make_pair(&bndAddr_, &bndPort_)); if (i < 0) { return false; } diff --git a/src/SocksProxySocket.cc b/src/SocksProxySocket.cc index 53e42481..848a2757 100644 --- a/src/SocksProxySocket.cc +++ b/src/SocksProxySocket.cc @@ -109,10 +109,10 @@ char SocksProxySocket::authByUserpass(const std::string& user, return res[1]; } -size_t SocksProxySocket::startUdpProxy(const std::string& listenAddr, - uint16_t listenPort, - std::string* bndAddrPtr, - uint16_t* bndPortPtr) +ssize_t +SocksProxySocket::startUdpAssociate(const std::string& listenAddr, + uint16_t listenPort, + std::pair bnd) { std::stringstream req; req << C_SOCKS_VER << C_CMD_UDP_ASSOCIATE << 0; @@ -188,12 +188,12 @@ size_t SocksProxySocket::startUdpProxy(const std::string& listenAddr, return -1; } - size_t i = bndAddrs_.size(); + ssize_t i = static_cast(bndAddrs_.size()); bndAddrs_.push_back(bndAddr); bndPorts_.push_back(bndPort); - if (bndAddrPtr && bndPortPtr) { - *bndAddrPtr = bndAddr; - *bndPortPtr = bndPort; + if (bnd.first && bnd.second) { + *(bnd.first) = bndAddr; + *(bnd.second) = bndPort; } return i; } diff --git a/src/SocksProxySocket.h b/src/SocksProxySocket.h index 1447d08b..93854c9d 100644 --- a/src/SocksProxySocket.h +++ b/src/SocksProxySocket.h @@ -89,9 +89,8 @@ public: // Leave listen host and port empty / 0 to indicate no receiving from proxy. // Returns -1 when error, otherwise the index to get the bnd addr and port. // Set bndAddrPtr and bndPortPtr to directly get the result bnd addr and port. - size_t startUdpProxy(const std::string& listenAddr, uint16_t listenPort, - std::string* bndAddrPtr = nullptr, - uint16_t* bndPortPtr = nullptr); + ssize_t startUdpAssociate(const std::string& listenAddr, uint16_t listenPort, + std::pair bnd = {}); // Get bnd addr and port via index i. // i is not checked and should be got from start*Proxy methods.