MCPcopy Create free account
hub / github.com/bitcoinxt/bitcoinxt / ThreadMapPort

Function ThreadMapPort

src/net.cpp:1100–1182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1098
1099#ifdef USE_UPNP
1100void ThreadMapPort()
1101{
1102 std::string port = strprintf("%u", GetListenPort());
1103 const char * multicastif = 0;
1104 const char * minissdpdpath = 0;
1105 struct UPNPDev * devlist = 0;
1106 char lanaddr[64];
1107
1108#ifndef UPNPDISCOVER_SUCCESS
1109 /* miniupnpc 1.5 */
1110 devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0);
1111#elif MINIUPNPC_API_VERSION < 14
1112 /* miniupnpc 1.6 */
1113 int error = 0;
1114 devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, &error);
1115#else
1116 /* miniupnpc 1.9.20150730 */
1117 int error = 0;
1118 devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, 2, &error);
1119#endif
1120
1121 struct UPNPUrls urls;
1122 struct IGDdatas data;
1123 int r;
1124
1125 r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
1126 if (r == 1)
1127 {
1128 if (fDiscover) {
1129 char externalIPAddress[40];
1130 r = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, externalIPAddress);
1131 if(r != UPNPCOMMAND_SUCCESS)
1132 LogPrintf("UPnP: GetExternalIPAddress() returned %d\n", r);
1133 else
1134 {
1135 if(externalIPAddress[0])
1136 {
1137 LogPrintf("UPnP: ExternalIPAddress = %s\n", externalIPAddress);
1138 AddLocal(CNetAddr(externalIPAddress), LOCAL_UPNP);
1139 }
1140 else
1141 LogPrintf("UPnP: GetExternalIPAddress failed.\n");
1142 }
1143 }
1144
1145 string strDesc = "Bitcoin " + FormatFullVersion();
1146
1147 try {
1148 while (true) {
1149#ifndef UPNPDISCOVER_SUCCESS
1150 /* miniupnpc 1.5 */
1151 r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
1152 port.c_str(), port.c_str(), lanaddr, strDesc.c_str(), "TCP", 0);
1153#else
1154 /* miniupnpc 1.6 */
1155 r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
1156 port.c_str(), port.c_str(), lanaddr, strDesc.c_str(), "TCP", 0, "0");
1157#endif

Callers

nothing calls this directly

Calls 5

GetListenPortFunction · 0.85
AddLocalFunction · 0.85
FormatFullVersionFunction · 0.85
MilliSleepFunction · 0.85
CNetAddrClass · 0.70

Tested by

no test coverage detected