static int init_upnp(void)
{
struct UPNPDev *devlist;
- struct UPNPDev *dev;
+ struct UPNPDev *dev = NULL;
+ struct UPNPDev *trydev = NULL;
char *descXML;
int descXMLsize = 0;
const char *multicastif = 0;
if (strstr(dev->st, "InternetGatewayDevice")) {
break;
}
+ if (!trydev && !switch_stristr("printer", dev->descURL)) {
+ trydev = dev;
+ }
+
dev = dev->pNext;
}
- if (!dev) {
- dev = devlist; /* defaulting to first device */
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No InternetGatewayDevice, using first entry as default (%s).\n", dev->descURL);
- }
+ }
+
+ if (!dev && trydev) {
+ dev = trydev; /* defaulting to first device */
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No InternetGatewayDevice, using first entry as default (%s).\n", dev->descURL);
+ } else if (devlist && !dev && !trydev) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No InternetGatewayDevice found and I am NOT going to try your printer because printers should not route to the internet, that would be DAFT\n");
+ }
+
+ if (dev) {
descXML = miniwget(dev->descURL, &descXMLsize);
nat_globals.descURL = strdup(dev->descURL);