SUBSCRIPTION_EPG |
SUBSCRIPTION_ONESHOT |
SUBSCRIPTION_TABLES))) {
- TAILQ_INSERT_TAIL(&epggrab_ota_pending, om, om_q_link);
- om->om_q_type = EPGGRAB_OTA_MUX_PENDING;
- if (r == SM_CODE_NO_FREE_ADAPTER)
+ if (r != SM_CODE_NO_ADAPTERS) {
+ TAILQ_INSERT_TAIL(&epggrab_ota_pending, om, om_q_link);
+ om->om_q_type = EPGGRAB_OTA_MUX_PENDING;
+ if (r == SM_CODE_NO_FREE_ADAPTER)
+ net->failed = 1;
+ } else {
net->failed = 1;
+ }
if (first == NULL)
first = om;
} else {
{
case SM_CODE_NOT_FREE:
case SM_CODE_NO_FREE_ADAPTER:
+ case SM_CODE_NO_ADAPTERS:
return "noFreeAdapter";
case SM_CODE_NO_DESCRAMBLER:
return "scrambled";
assert(mm->mm_scan_state == MM_SCAN_STATE_PEND);
/* No free tuners - stop */
- if (r == SM_CODE_NO_FREE_ADAPTER)
+ if (r == SM_CODE_NO_FREE_ADAPTER || r == SM_CODE_NO_ADAPTERS)
break;
/* No valid tuners (subtly different, might be able to tuner a later
service_instance_destroy(sil, si);
}
+ if (TAILQ_EMPTY(sil)) {
+ if (*error < SM_CODE_NO_ADAPTERS)
+ *error = SM_CODE_NO_ADAPTERS;
+ return NULL;
+ }
+
/* Debug */
TAILQ_FOREACH(si, sil, si_link) {
const char *name = ch ? channel_get_name(ch) : NULL;
return N_("No source available");
case SM_CODE_NO_SERVICE:
return N_("No service assigned to channel");
+ case SM_CODE_NO_ADAPTERS:
+ return N_("No assigned adapters");
case SM_CODE_ABORTED:
return N_("Aborted by user");
#define SM_CODE_NO_SOURCE 206
#define SM_CODE_NO_SERVICE 207
#define SM_CODE_NO_VALID_ADAPTER 208
+#define SM_CODE_NO_ADAPTERS 209
#define SM_CODE_ABORTED 300