Ticket #2338: fix-trac-2338-style2.patch

File fix-trac-2338-style2.patch, 2.8 KB (added by Echelon9, 10 years ago)

Stylistic approach #2

  • source/network/NetServer.cpp

     
    225225    if (!rootDescURL.empty())
    226226        LOGMESSAGE(L"Net server: attempting to use cached root descriptor URL: %hs", rootDescURL.c_str());
    227227
    228     // Init the return variable for UPNP_GetValidIGD to 1 so things behave when using cached URLs.
    229     int ret = 1;
     228    // Init the return variable for UPNP_GetValidIGD to 0.
     229    int ret = 0;
     230    bool bAllocatedDescriptorURL = false;
    230231
    231232    // If we have a cached URL, try that first, otherwise try getting a valid UPnP device for 10 seconds. We also get our LAN address here.
    232     if (!((!rootDescURL.empty() && UPNP_GetIGDFromUrl(rootDescURL.c_str(), &urls, &data, internalIPAddress, sizeof(internalIPAddress)))
    233       || ((devlist = upnpDiscover(10000, 0, 0, 0, 0, 0)) != NULL && (ret = UPNP_GetValidIGD(devlist, &urls, &data, internalIPAddress, sizeof(internalIPAddress))) != 0)))
     233    if (!rootDescURL.empty() && UPNP_GetIGDFromUrl(rootDescURL.c_str(), &urls, &data, internalIPAddress, sizeof(internalIPAddress)))
    234234    {
     235        LOGMESSAGE(L"Net server: using cached IGD = %hs", urls.controlURL);
     236        // Init the return variable for UPNP_GetValidIGD to 1 so things behave when using cached URLs.
     237        ret = 1;
     238    }
     239    // Else if we don't have a cached URL, or the one cached didn't respond. Try getting a valid UPnP device for 10 seconds
     240    else if ((devlist = upnpDiscover(10000, 0, 0, 0, 0, 0)) != NULL)
     241    {
     242        // UPNP_GetValidIGD() allocates struct UPNPUrls urls on the stack for all non-zero return value.
     243       
     244        /* UPNP_GetValidIGD() :
     245         * return values :
     246         *     0 = NO IGD found
     247         *     1 = A valid connected IGD has been found
     248         *     2 = A valid IGD has been found but it reported as
     249         *         not connected
     250         *     3 = an UPnP device has been found but was not recognized as an IGD
     251         *
     252         * In any non zero return case, the urls and data structures
     253         * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
     254         * free allocated memory.
     255         */
     256        ret = UPNP_GetValidIGD(devlist, &urls, &data, internalIPAddress, sizeof(internalIPAddress));
     257        (ret != 0) ? bAllocatedDescriptorURL = true: bAllocatedDescriptorURL = false;
     258    }
     259    else {
    235260        LOGMESSAGE(L"Net server: upnpDiscover failed and no working cached URL.");
    236261        return NULL;
    237262    }
    238263
    239264    switch (ret)
    240265    {
     266    case 0:
     267        LOGMESSAGE(L"Net server: No IGD found");
     268        break;
    241269    case 1:
    242270        LOGMESSAGE(L"Net server: found valid IGD = %hs", urls.controlURL);
    243271        break;
     
    295323    LOGMESSAGE(L"Net server: cached UPnP root descriptor URL as %hs", urls.controlURL);
    296324
    297325    // Make sure everything is properly freed.
    298     FreeUPNPUrls(&urls);
     326    if (bAllocatedDescriptorURL)
     327        FreeUPNPUrls(&urls);
     328   
    299329    freeUPNPDevlist(devlist);
    300330
    301331    return NULL;