MCPcopy Create free account
hub / github.com/WaykiChain/WaykiChain / Socks5

Function Socks5

src/netbase.cpp:205–308  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203}
204
205bool static Socks5(string strDest, int port, SOCKET& hSocket) {
206 LogPrint(BCLog::INFO, "SOCKS5 connecting %s\n", strDest);
207 if (strDest.size() > 255) {
208 closesocket(hSocket);
209 return ERRORMSG("Hostname too long");
210 }
211 char pszSocks5Init[] = "\5\1\0";
212 ssize_t nSize = sizeof(pszSocks5Init) - 1;
213
214 ssize_t ret = send(hSocket, pszSocks5Init, nSize, MSG_NOSIGNAL);
215 if (ret != nSize) {
216 closesocket(hSocket);
217 return ERRORMSG("Error sending to proxy");
218 }
219 char pchRet1[2];
220 if (recv(hSocket, pchRet1, 2, 0) != 2) {
221 closesocket(hSocket);
222 return ERRORMSG("Error reading proxy response");
223 }
224 if (pchRet1[0] != 0x05 || pchRet1[1] != 0x00) {
225 closesocket(hSocket);
226 return ERRORMSG("Proxy failed to initialize");
227 }
228 string strSocks5("\5\1");
229 strSocks5 += '\000';
230 strSocks5 += '\003';
231 strSocks5 += static_cast<char>(min((int)strDest.size(), 255));
232 strSocks5 += strDest;
233 strSocks5 += static_cast<char>((port >> 8) & 0xFF);
234 strSocks5 += static_cast<char>((port >> 0) & 0xFF);
235 ret = send(hSocket, strSocks5.c_str(), strSocks5.size(), MSG_NOSIGNAL);
236 if (ret != (ssize_t)strSocks5.size()) {
237 closesocket(hSocket);
238 return ERRORMSG("Error sending to proxy");
239 }
240 char pchRet2[4];
241 if (recv(hSocket, pchRet2, 4, 0) != 4) {
242 closesocket(hSocket);
243 return ERRORMSG("Error reading proxy response");
244 }
245 if (pchRet2[0] != 0x05) {
246 closesocket(hSocket);
247 return ERRORMSG("Proxy failed to accept request");
248 }
249 if (pchRet2[1] != 0x00) {
250 closesocket(hSocket);
251 switch (pchRet2[1]) {
252 case 0x01:
253 return ERRORMSG("Proxy error: general failure");
254 case 0x02:
255 return ERRORMSG("Proxy error: connection not allowed");
256 case 0x03:
257 return ERRORMSG("Proxy error: network unreachable");
258 case 0x04:
259 return ERRORMSG("Proxy error: host unreachable");
260 case 0x05:
261 return ERRORMSG("Proxy error: connection refused");
262 case 0x06:

Callers 2

ConnectSocketFunction · 0.85
ConnectSocketByNameFunction · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected