Get rid of NL macro

This commit is contained in:
Cameron Gutman 2022-04-16 11:56:26 -05:00
parent ce3b9c3d31
commit 28a5935ee7

View File

@ -32,8 +32,6 @@ bool getHopsIP4(IN_ADDR* hopAddress, int* hopAddressCount);
struct UPNPDev* getUPnPDevicesByAddress(IN_ADDR address); struct UPNPDev* getUPnPDevicesByAddress(IN_ADDR address);
bool PCPMapPort(PSOCKADDR_STORAGE localAddr, int localAddrLen, PSOCKADDR_STORAGE pcpAddr, int pcpAddrLen, int proto, int port, bool enable, bool indefinite); bool PCPMapPort(PSOCKADDR_STORAGE localAddr, int localAddrLen, PSOCKADDR_STORAGE pcpAddr, int pcpAddrLen, int proto, int port, bool enable, bool indefinite);
#define NL "\n"
#define SERVICE_NAME "MISS" #define SERVICE_NAME "MISS"
#define UPNP_SERVICE_NAME "Moonlight" #define UPNP_SERVICE_NAME "Moonlight"
#define POLLING_DELAY_SEC 120 #define POLLING_DELAY_SEC 120
@ -99,7 +97,7 @@ bool UPnPMapPort(struct UPNPUrls* urls, struct IGDdatas* data, int proto, const
intClient, intPort, desc, enabled, leaseDuration); intClient, intPort, desc, enabled, leaseDuration);
if (err == 714) { if (err == 714) {
// NoSuchEntryInArray // NoSuchEntryInArray
printf("NOT FOUND" NL); printf("NOT FOUND\n");
if (validationPass) { if (validationPass) {
// On validation, we found a missing entry. Convert this entry to indefinite // On validation, we found a missing entry. Convert this entry to indefinite
@ -108,7 +106,7 @@ bool UPnPMapPort(struct UPNPUrls* urls, struct IGDdatas* data, int proto, const
} }
} }
else if (err == 606) { else if (err == 606) {
printf("UNAUTHORIZED" NL); printf("UNAUTHORIZED\n");
// If we're just validating, we're done. We can't know if the entry was // If we're just validating, we're done. We can't know if the entry was
// actually applied but we'll return true to avoid false errors if it was. // actually applied but we'll return true to avoid false errors if it was.
@ -120,7 +118,7 @@ bool UPnPMapPort(struct UPNPUrls* urls, struct IGDdatas* data, int proto, const
// Some routers change the description, so we can't check that here // Some routers change the description, so we can't check that here
if (!strcmp(intClient, myAddr)) { if (!strcmp(intClient, myAddr)) {
if (atoi(leaseDuration) == 0) { if (atoi(leaseDuration) == 0) {
printf("OK (Static, Internal port: %s)" NL, intPort); printf("OK (Static, Internal port: %s)\n", intPort);
// If we have an existing permanent mapping, we can just leave it alone. // If we have an existing permanent mapping, we can just leave it alone.
if (enable) { if (enable) {
@ -128,7 +126,7 @@ bool UPnPMapPort(struct UPNPUrls* urls, struct IGDdatas* data, int proto, const
} }
} }
else { else {
printf("OK (%s seconds remaining, Internal port: %s)" NL, leaseDuration, intPort); printf("OK (%s seconds remaining, Internal port: %s)\n", leaseDuration, intPort);
} }
// If we're just validating, we found an entry, so we're done. // If we're just validating, we found an entry, so we're done.
@ -141,17 +139,17 @@ bool UPnPMapPort(struct UPNPUrls* urls, struct IGDdatas* data, int proto, const
printf("Deleting UPnP mapping for %s %s -> %s...", protoStr, portStr, myAddr); printf("Deleting UPnP mapping for %s %s -> %s...", protoStr, portStr, myAddr);
err = UPNP_DeletePortMapping(urls->controlURL, data->first.servicetype, portStr, protoStr, nullptr); err = UPNP_DeletePortMapping(urls->controlURL, data->first.servicetype, portStr, protoStr, nullptr);
if (err == UPNPCOMMAND_SUCCESS) { if (err == UPNPCOMMAND_SUCCESS) {
printf("OK" NL); printf("OK\n");
} }
else { else {
printf("ERROR %d" NL, err); printf("ERROR %d\n", err);
} }
return true; return true;
} }
} }
else { else {
printf("CONFLICT: %s %s" NL, intClient, desc); printf("CONFLICT: %s %s\n", intClient, desc);
// If we're just validating, we found an entry, so we're done. // If we're just validating, we found an entry, so we're done.
if (validationPass) { if (validationPass) {
@ -166,21 +164,21 @@ bool UPnPMapPort(struct UPNPUrls* urls, struct IGDdatas* data, int proto, const
printf("Trying to delete conflicting UPnP mapping for %s %s -> %s...", protoStr, portStr, intClient); printf("Trying to delete conflicting UPnP mapping for %s %s -> %s...", protoStr, portStr, intClient);
err = UPNP_DeletePortMapping(urls->controlURL, data->first.servicetype, portStr, protoStr, nullptr); err = UPNP_DeletePortMapping(urls->controlURL, data->first.servicetype, portStr, protoStr, nullptr);
if (err == UPNPCOMMAND_SUCCESS) { if (err == UPNPCOMMAND_SUCCESS) {
printf("OK" NL); printf("OK\n");
} }
else if (err == 606) { else if (err == 606) {
printf("UNAUTHORIZED" NL); printf("UNAUTHORIZED\n");
return false; return false;
} }
else { else {
printf("ERROR %d" NL, err); printf("ERROR %d\n", err);
return false; return false;
} }
} }
} }
} }
else { else {
printf("ERROR %d (%s)" NL, err, strupnperror(err)); printf("ERROR %d (%s)\n", err, strupnperror(err));
// If we get a strange error from the router, we'll assume it's some old broken IGDv1 // If we get a strange error from the router, we'll assume it's some old broken IGDv1
// device and only use indefinite lease durations to hopefully avoid confusing it. // device and only use indefinite lease durations to hopefully avoid confusing it.
@ -226,11 +224,11 @@ bool UPnPMapPort(struct UPNPUrls* urls, struct IGDdatas* data, int proto, const
printf("ALTERNATE "); printf("ALTERNATE ");
} }
if (err == UPNPCOMMAND_SUCCESS) { if (err == UPNPCOMMAND_SUCCESS) {
printf("OK" NL); printf("OK\n");
return true; return true;
} }
else { else {
printf("ERROR %d (%s)" NL, err, strupnperror(err)); printf("ERROR %d (%s)\n", err, strupnperror(err));
return false; return false;
} }
} }
@ -252,7 +250,7 @@ bool GetIP4OnLinkPrefixLength(char* lanAddressString, int* prefixLength)
free(addresses); free(addresses);
addresses = (PIP_ADAPTER_ADDRESSES)malloc(length); addresses = (PIP_ADAPTER_ADDRESSES)malloc(length);
if (addresses == NULL) { if (addresses == NULL) {
printf("malloc(%u) failed" NL, length); printf("malloc(%u) failed\n", length);
return false; return false;
} }
@ -268,7 +266,7 @@ bool GetIP4OnLinkPrefixLength(char* lanAddressString, int* prefixLength)
} while (error == ERROR_BUFFER_OVERFLOW); } while (error == ERROR_BUFFER_OVERFLOW);
if (error != ERROR_SUCCESS) { if (error != ERROR_SUCCESS) {
printf("GetAdaptersAddresses() failed: %d" NL, error); printf("GetAdaptersAddresses() failed: %d\n", error);
free(addresses); free(addresses);
return false; return false;
} }
@ -294,7 +292,7 @@ bool GetIP4OnLinkPrefixLength(char* lanAddressString, int* prefixLength)
currentAdapter = currentAdapter->Next; currentAdapter = currentAdapter->Next;
} }
printf("No adapter found with IPv4 address: %s" NL, lanAddressString); printf("No adapter found with IPv4 address: %s\n", lanAddressString);
free(addresses); free(addresses);
return false; return false;
} }
@ -310,31 +308,31 @@ bool UPnPHandleDeviceList(struct UPNPDev* list, bool enable, char* lanAddrOverri
int ret = UPNP_GetValidIGD(list, &urls, &data, localAddress, sizeof(localAddress)); int ret = UPNP_GetValidIGD(list, &urls, &data, localAddress, sizeof(localAddress));
if (ret == 0) { if (ret == 0) {
printf("No UPnP device found!" NL); printf("No UPnP device found!\n");
return false; return false;
} }
else if (ret == 3) { else if (ret == 3) {
printf("No UPnP IGD found!" NL); printf("No UPnP IGD found!\n");
FreeUPNPUrls(&urls); FreeUPNPUrls(&urls);
return false; return false;
} }
else if (ret == 1) { else if (ret == 1) {
printf("Found a connected UPnP IGD (%s)" NL, urls.rootdescURL); printf("Found a connected UPnP IGD (%s)\n", urls.rootdescURL);
} }
else if (ret == 2) { else if (ret == 2) {
printf("Found a disconnected (!) UPnP IGD (%s)" NL, urls.rootdescURL); printf("Found a disconnected (!) UPnP IGD (%s)\n", urls.rootdescURL);
// Even if we are able to add forwarding entries, go ahead and try NAT-PMP // Even if we are able to add forwarding entries, go ahead and try NAT-PMP
success = false; success = false;
} }
else { else {
printf("UPNP_GetValidIGD() failed: %d" NL, ret); printf("UPNP_GetValidIGD() failed: %d\n", ret);
return false; return false;
} }
ret = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, wanAddr); ret = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, wanAddr);
if (ret == UPNPCOMMAND_SUCCESS) { if (ret == UPNPCOMMAND_SUCCESS) {
printf("UPnP IGD WAN address is: %s" NL, wanAddr); printf("UPnP IGD WAN address is: %s\n", wanAddr);
} }
else { else {
// Empty string // Empty string
@ -390,7 +388,7 @@ bool UPnPHandleDeviceList(struct UPNPDev* list, bool enable, char* lanAddrOverri
// Wait 10 seconds for the router state to quiesce or the stop event to be set // Wait 10 seconds for the router state to quiesce or the stop event to be set
printf("Waiting before UPnP port validation..."); printf("Waiting before UPnP port validation...");
if (WaitForSingleObject(s_StopEvent, 10000) == WAIT_TIMEOUT) { if (WaitForSingleObject(s_StopEvent, 10000) == WAIT_TIMEOUT) {
printf("done" NL); printf("done\n");
// Perform the validation pass (converting any now missing entries to permanent ones) // Perform the validation pass (converting any now missing entries to permanent ones)
for (int i = 0; i < ARRAYSIZE(k_Ports); i++) { for (int i = 0; i < ARRAYSIZE(k_Ports); i++) {
@ -400,7 +398,7 @@ bool UPnPHandleDeviceList(struct UPNPDev* list, bool enable, char* lanAddrOverri
} }
} }
else { else {
printf("aborted" NL); printf("aborted\n");
} }
} }
@ -440,7 +438,7 @@ bool NATPMPMapPort(natpmp_t* natpmp, int proto, int port, bool enable, bool inde
printf("Updating NAT-PMP port mapping for %s %d...", proto == IPPROTO_TCP ? "TCP" : "UDP", port); printf("Updating NAT-PMP port mapping for %s %d...", proto == IPPROTO_TCP ? "TCP" : "UDP", port);
int err = sendnewportmappingrequest(natpmp, natPmpProto, port, enable ? port : 0, lifetime); int err = sendnewportmappingrequest(natpmp, natPmpProto, port, enable ? port : 0, lifetime);
if (err < 0) { if (err < 0) {
printf("ERROR %d" NL, err); printf("ERROR %d\n", err);
return false; return false;
} }
@ -456,7 +454,7 @@ bool NATPMPMapPort(natpmp_t* natpmp, int proto, int port, bool enable, bool inde
err = getnatpmprequesttimeout(natpmp, &timeout); err = getnatpmprequesttimeout(natpmp, &timeout);
if (err != 0) { if (err != 0) {
assert(err == 0); assert(err == 0);
printf("WAIT FAILED: %d" NL, err); printf("WAIT FAILED: %d\n", err);
return false; return false;
} }
@ -466,22 +464,22 @@ bool NATPMPMapPort(natpmp_t* natpmp, int proto, int port, bool enable, bool inde
} while (err == NATPMP_TRYAGAIN); } while (err == NATPMP_TRYAGAIN);
if (err != 0) { if (err != 0) {
printf("FAILED %d" NL, err); printf("FAILED %d\n", err);
return false; return false;
} }
else if (response.pnu.newportmapping.lifetime == 0 && !enable) { else if (response.pnu.newportmapping.lifetime == 0 && !enable) {
printf("DELETED" NL); printf("DELETED\n");
return true; return true;
} }
else if (response.pnu.newportmapping.mappedpublicport != port) { else if (response.pnu.newportmapping.mappedpublicport != port) {
printf("CONFLICT" NL); printf("CONFLICT\n");
// It couldn't assign us the external port we requested and gave us an alternate external port. // It couldn't assign us the external port we requested and gave us an alternate external port.
// We can't use this alternate mapping, so immediately release it. // We can't use this alternate mapping, so immediately release it.
printf("Deleting unwanted NAT-PMP mapping for %s %d...", proto == IPPROTO_TCP ? "TCP" : "UDP", response.pnu.newportmapping.mappedpublicport); printf("Deleting unwanted NAT-PMP mapping for %s %d...", proto == IPPROTO_TCP ? "TCP" : "UDP", response.pnu.newportmapping.mappedpublicport);
err = sendnewportmappingrequest(natpmp, natPmpProto, response.pnu.newportmapping.privateport, 0, 0); err = sendnewportmappingrequest(natpmp, natPmpProto, response.pnu.newportmapping.privateport, 0, 0);
if (err < 0) { if (err < 0) {
printf("ERROR %d" NL, err); printf("ERROR %d\n", err);
return false; return false;
} }
else { else {
@ -495,7 +493,7 @@ bool NATPMPMapPort(natpmp_t* natpmp, int proto, int port, bool enable, bool inde
err = getnatpmprequesttimeout(natpmp, &timeout); err = getnatpmprequesttimeout(natpmp, &timeout);
if (err != 0) { if (err != 0) {
assert(err == 0); assert(err == 0);
printf("WAIT FAILED: %d" NL, err); printf("WAIT FAILED: %d\n", err);
return false; return false;
} }
@ -505,17 +503,17 @@ bool NATPMPMapPort(natpmp_t* natpmp, int proto, int port, bool enable, bool inde
} while (err == NATPMP_TRYAGAIN); } while (err == NATPMP_TRYAGAIN);
if (err == 0) { if (err == 0) {
printf("OK" NL); printf("OK\n");
return false; return false;
} }
else { else {
printf("FAILED %d" NL, err); printf("FAILED %d\n", err);
return false; return false;
} }
} }
} }
else { else {
printf("OK (%d seconds remaining)" NL, response.pnu.newportmapping.lifetime); printf("OK (%d seconds remaining)\n", response.pnu.newportmapping.lifetime);
return true; return true;
} }
} }
@ -537,7 +535,7 @@ bool IsGameStreamEnabled()
error = RegQueryValueExA(key, "EnableStreaming", nullptr, nullptr, (LPBYTE)&enabled, &len); error = RegQueryValueExA(key, "EnableStreaming", nullptr, nullptr, (LPBYTE)&enabled, &len);
RegCloseKey(key); RegCloseKey(key);
if (error != ERROR_SUCCESS) { if (error != ERROR_SUCCESS) {
printf("RegQueryValueExA() failed: %d" NL, error); printf("RegQueryValueExA() failed: %d\n", error);
return false; return false;
} }
@ -552,18 +550,18 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
char upstreamAddrNatPmp[128] = {}; char upstreamAddrNatPmp[128] = {};
char upstreamAddrUPnP[128] = {}; char upstreamAddrUPnP[128] = {};
printf("Starting port mapping update on %s to %s..." NL, printf("Starting port mapping update on %s to %s...\n",
targetAddressIP4 ? targetAddressIP4 : "default gateway", targetAddressIP4 ? targetAddressIP4 : "default gateway",
internalAddressIP4 ? internalAddressIP4 : "local machine"); internalAddressIP4 ? internalAddressIP4 : "local machine");
int natPmpErr = initnatpmp(&natpmp, targetAddressIP4 ? 1 : 0, targetAddressIP4 ? inet_addr(targetAddressIP4) : 0); int natPmpErr = initnatpmp(&natpmp, targetAddressIP4 ? 1 : 0, targetAddressIP4 ? inet_addr(targetAddressIP4) : 0);
if (natPmpErr != 0) { if (natPmpErr != 0) {
printf("initnatpmp() failed: %d" NL, natPmpErr); printf("initnatpmp() failed: %d\n", natPmpErr);
} }
else { else {
natPmpErr = sendpublicaddressrequest(&natpmp); natPmpErr = sendpublicaddressrequest(&natpmp);
if (natPmpErr < 0) { if (natPmpErr < 0) {
printf("sendpublicaddressrequest() failed: %d" NL, natPmpErr); printf("sendpublicaddressrequest() failed: %d\n", natPmpErr);
closenatpmp(&natpmp); closenatpmp(&natpmp);
} }
} }
@ -577,7 +575,7 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
if (targetAddressIP4 == nullptr) { if (targetAddressIP4 == nullptr) {
// If we have no target, use discovery to find the first hop // If we have no target, use discovery to find the first hop
ipv4Devs = upnpDiscoverAll(UPNP_DISCOVERY_DELAY_MS, nullptr, nullptr, UPNP_LOCAL_PORT_ANY, 0, 2, &upnpErr); ipv4Devs = upnpDiscoverAll(UPNP_DISCOVERY_DELAY_MS, nullptr, nullptr, UPNP_LOCAL_PORT_ANY, 0, 2, &upnpErr);
printf("UPnP IPv4 IGD discovery completed with error code: %d" NL, upnpErr); printf("UPnP IPv4 IGD discovery completed with error code: %d\n", upnpErr);
} }
else { else {
// We have a specified target, so do discovery against that directly (may be outside our subnet in case of double-NAT) // We have a specified target, so do discovery against that directly (may be outside our subnet in case of double-NAT)
@ -588,7 +586,7 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
// Abort if this is an add/update request and we're stopping // Abort if this is an add/update request and we're stopping
if (enable && WaitForSingleObject(s_StopEvent, 0) == WAIT_OBJECT_0) { if (enable && WaitForSingleObject(s_StopEvent, 0) == WAIT_OBJECT_0) {
printf("Aborting port mapping update due to stop request" NL); printf("Aborting port mapping update due to stop request\n");
goto Exit; goto Exit;
} }
@ -598,17 +596,17 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
natPmpErr = readnatpmpresponseorretry(&natpmp, &response); natPmpErr = readnatpmpresponseorretry(&natpmp, &response);
if (natPmpErr == 0) { if (natPmpErr == 0) {
inet_ntop(AF_INET, &response.pnu.publicaddress.addr, upstreamAddrNatPmp, sizeof(upstreamAddrNatPmp)); inet_ntop(AF_INET, &response.pnu.publicaddress.addr, upstreamAddrNatPmp, sizeof(upstreamAddrNatPmp));
printf("NAT-PMP upstream address is: %s" NL, upstreamAddrNatPmp); printf("NAT-PMP upstream address is: %s\n", upstreamAddrNatPmp);
} }
else { else {
printf("NAT-PMP public address request failed: %d" NL, natPmpErr); printf("NAT-PMP public address request failed: %d\n", natPmpErr);
closenatpmp(&natpmp); closenatpmp(&natpmp);
} }
} }
// Don't try NAT-PMP if UPnP succeeds // Don't try NAT-PMP if UPnP succeeds
if (UPnPHandleDeviceList(ipv4Devs, enable, internalAddressIP4, upstreamAddrUPnP)) { if (UPnPHandleDeviceList(ipv4Devs, enable, internalAddressIP4, upstreamAddrUPnP)) {
printf("UPnP IPv4 port mapping successful" NL); printf("UPnP IPv4 port mapping successful\n");
if (enable) { if (enable) {
// We still want to try NAT-PMP if we're removing // We still want to try NAT-PMP if we're removing
// rules to ensure any NAT-PMP rules get cleaned up // rules to ensure any NAT-PMP rules get cleaned up
@ -627,7 +625,7 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
// if we created the rules we'd be deleting. Since we don't have that, we can't // if we created the rules we'd be deleting. Since we don't have that, we can't
// safely remove mappings that could be shared by another machine behind a double NAT. // safely remove mappings that could be shared by another machine behind a double NAT.
if (!enable && targetAddressIP4 != nullptr) { if (!enable && targetAddressIP4 != nullptr) {
printf("Not removing upstream NAT-PMP mappings on non-default gateway device" NL); printf("Not removing upstream NAT-PMP mappings on non-default gateway device\n");
tryNatPmp = false; tryNatPmp = false;
} }
@ -663,7 +661,7 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
} }
if (success) { if (success) {
printf("NAT-PMP IPv4 port mapping successful" NL); printf("NAT-PMP IPv4 port mapping successful\n");
// Always try all possibilities when disabling to ensure // Always try all possibilities when disabling to ensure
// we completely clean up // we completely clean up
@ -695,7 +693,7 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
targetAddr.sin_addr.S_un.S_addr = route.dwForwardNextHop; targetAddr.sin_addr.S_un.S_addr = route.dwForwardNextHop;
} }
else { else {
printf("GetBestRoute() failed: %d" NL, error); printf("GetBestRoute() failed: %d\n", error);
goto Exit; goto Exit;
} }
} }
@ -723,22 +721,22 @@ void UpdatePortMappingsForTarget(bool enable, char* targetAddressIP4, char* inte
} }
if (success) { if (success) {
printf("PCP IPv4 port mapping successful" NL); printf("PCP IPv4 port mapping successful\n");
} }
} }
Exit: Exit:
// Write this at the end to avoid clobbering an input parameter // Write this at the end to avoid clobbering an input parameter
if (upstreamAddrNatPmp[0] != 0 && inet_addr(upstreamAddrNatPmp) != 0) { if (upstreamAddrNatPmp[0] != 0 && inet_addr(upstreamAddrNatPmp) != 0) {
printf("Using NAT-PMP upstream IPv4 address: %s" NL, upstreamAddrNatPmp); printf("Using NAT-PMP upstream IPv4 address: %s\n", upstreamAddrNatPmp);
strcpy(upstreamAddressIP4, upstreamAddrNatPmp); strcpy(upstreamAddressIP4, upstreamAddrNatPmp);
} }
else if (upstreamAddrUPnP[0] != 0 && inet_addr(upstreamAddrUPnP) != 0) { else if (upstreamAddrUPnP[0] != 0 && inet_addr(upstreamAddrUPnP) != 0) {
printf("Using UPnP upstream IPv4 address: %s" NL, upstreamAddrUPnP); printf("Using UPnP upstream IPv4 address: %s\n", upstreamAddrUPnP);
strcpy(upstreamAddressIP4, upstreamAddrUPnP); strcpy(upstreamAddressIP4, upstreamAddrUPnP);
} }
else { else {
printf("No valid upstream IPv4 address found!" NL); printf("No valid upstream IPv4 address found!\n");
upstreamAddressIP4[0] = 0; upstreamAddressIP4[0] = 0;
} }
} }
@ -774,12 +772,12 @@ void UpdatePortMappings(bool enable)
char upstreamAddrStr[128]; char upstreamAddrStr[128];
unsigned long upstreamAddr; unsigned long upstreamAddr;
printf("Finding upstream IPv4 hops via traceroute..." NL); printf("Finding upstream IPv4 hops via traceroute...\n");
if (!getHopsIP4(hops, &hopCount)) { if (!getHopsIP4(hops, &hopCount)) {
hopCount = 0; hopCount = 0;
} }
else { else {
printf("Found %d hops" NL, hopCount); printf("Found %d hops\n", hopCount);
} }
// getHopsIP4() already skips the default gateway, so 0 // getHopsIP4() already skips the default gateway, so 0
@ -791,10 +789,10 @@ void UpdatePortMappings(bool enable)
while (upstreamAddrStr[0] != 0 && (upstreamAddr = inet_addr(upstreamAddrStr)) != 0) { while (upstreamAddrStr[0] != 0 && (upstreamAddr = inet_addr(upstreamAddrStr)) != 0) {
// We got an upstream address. Let's check if this is a NAT // We got an upstream address. Let's check if this is a NAT
if (IsLikelyNAT(upstreamAddr)) { if (IsLikelyNAT(upstreamAddr)) {
printf("Upstream address %s is likely a NAT" NL, upstreamAddrStr); printf("Upstream address %s is likely a NAT\n", upstreamAddrStr);
if (nextHopIndex >= hopCount) { if (nextHopIndex >= hopCount) {
printf("Traceroute didn't reach this hop! Aborting!" NL); printf("Traceroute didn't reach this hop! Aborting!\n");
break; break;
} }
@ -808,7 +806,7 @@ void UpdatePortMappings(bool enable)
} }
else { else {
// If we reach a proper public IP address, we're done // If we reach a proper public IP address, we're done
printf("Reached the Internet at hop %d" NL, nextHopIndex); printf("Reached the Internet at hop %d\n", nextHopIndex);
break; break;
} }
@ -848,12 +846,12 @@ void ResetLogFile(bool standaloneExe)
} }
// Print a log header // Print a log header
printf("Moonlight Internet Streaming Service v" VER_VERSION_STR NL); printf("Moonlight Internet Streaming Service v" VER_VERSION_STR "\n");
// Print the current time // Print the current time
GetSystemTime(&time); GetSystemTime(&time);
GetTimeFormatA(LOCALE_SYSTEM_DEFAULT, 0, &time, "hh':'mm':'ss tt", timeString, ARRAYSIZE(timeString)); GetTimeFormatA(LOCALE_SYSTEM_DEFAULT, 0, &time, "hh':'mm':'ss tt", timeString, ARRAYSIZE(timeString));
printf("The current UTC time is: %s" NL, timeString); printf("The current UTC time is: %s\n", timeString);
} }
DWORD WINAPI GameStreamStateChangeThread(PVOID Context) DWORD WINAPI GameStreamStateChangeThread(PVOID Context)
@ -934,10 +932,10 @@ int Run(bool standaloneExe)
bool gameStreamEnabled = IsGameStreamEnabled(); bool gameStreamEnabled = IsGameStreamEnabled();
if (gameStreamEnabled) { if (gameStreamEnabled) {
printf("GameStream is ON!" NL); printf("GameStream is ON!\n");
} }
else { else {
printf("GameStream is OFF!" NL); printf("GameStream is OFF!\n");
} }
// Acquire the mapping lock and update port mappings // Acquire the mapping lock and update port mappings
@ -954,7 +952,7 @@ int Run(bool standaloneExe)
// Refresh when half the duration is expired or if an IP interface // Refresh when half the duration is expired or if an IP interface
// change event occurs. // change event occurs.
printf("Going to sleep..." NL); printf("Going to sleep...\n");
fflush(stdout); fflush(stdout);
ULONGLONG beforeSleepTime = GetTickCount64(); ULONGLONG beforeSleepTime = GetTickCount64();
@ -962,7 +960,7 @@ int Run(bool standaloneExe)
if (ret == WAIT_OBJECT_0) { if (ret == WAIT_OBJECT_0) {
ResetLogFile(standaloneExe); ResetLogFile(standaloneExe);
printf("Woke up for interface change notification after %lld seconds" NL, printf("Woke up for interface change notification after %lld seconds\n",
(GetTickCount64() - beforeSleepTime) / 1000); (GetTickCount64() - beforeSleepTime) / 1000);
// Wait a little bit for the interface to settle down (DHCP, RA, etc) // Wait a little bit for the interface to settle down (DHCP, RA, etc)
@ -971,17 +969,17 @@ int Run(bool standaloneExe)
else if (ret == WAIT_OBJECT_0 + 1) { else if (ret == WAIT_OBJECT_0 + 1) {
ResetLogFile(standaloneExe); ResetLogFile(standaloneExe);
printf("Woke up for GameStream state change notification after %lld seconds" NL, printf("Woke up for GameStream state change notification after %lld seconds\n",
(GetTickCount64() - beforeSleepTime) / 1000); (GetTickCount64() - beforeSleepTime) / 1000);
} }
else if (ret == WAIT_OBJECT_0 + 2) { else if (ret == WAIT_OBJECT_0 + 2) {
printf("Woke up for stop notification" NL); printf("Woke up for stop notification\n");
return 0; return 0;
} }
else { else {
ResetLogFile(standaloneExe); ResetLogFile(standaloneExe);
printf("Woke up for periodic refresh" NL); printf("Woke up for periodic refresh\n");
} }
} }
} }
@ -1031,7 +1029,7 @@ ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)
ServiceStatusHandle = RegisterServiceCtrlHandlerEx(SERVICE_NAME, HandlerEx, NULL); ServiceStatusHandle = RegisterServiceCtrlHandlerEx(SERVICE_NAME, HandlerEx, NULL);
if (ServiceStatusHandle == NULL) { if (ServiceStatusHandle == NULL) {
fprintf(stderr, "RegisterServiceCtrlHandlerEx() failed: %d" NL, GetLastError()); fprintf(stderr, "RegisterServiceCtrlHandlerEx() failed: %d\n", GetLastError());
return; return;
} }