ae = calloc(1, sizeof(access_entry_t));
- idnode_insert(&ae->ae_id, uuid, &access_entry_class, 0);
+ if (idnode_insert(&ae->ae_id, uuid, &access_entry_class, 0)) {
+ if (uuid)
+ tvherror("access", "invalid uuid '%s'", uuid);
+ free(ae);
+ return NULL;
+ }
TAILQ_INIT(&ae->ae_ipmasks);
{
lock_assert(&global_lock);
- idnode_insert(&ch->ch_id, uuid, idc, IDNODE_SHORT_UUID);
+ if (idnode_insert(&ch->ch_id, uuid, idc, IDNODE_SHORT_UUID)) {
+ if (uuid)
+ tvherror("channel", "invalid uuid '%s'", uuid);
+ free(ch);
+ return NULL;
+ }
if (RB_INSERT_SORTED(&channels, ch, ch_link, ch_id_cmp)) {
tvherror("channel", "id collision!");
abort();
const idclass_t *c = NULL;
uint32_t ct;
+ lock_assert(&global_lock);
+
esf->esf_caid = -1;
esf->esf_caprovider = -1;
if (ESF_CLASS_IS_VALID(cls)) {
tvherror("esfilter", "wrong class %d!", cls);
abort();
}
- lock_assert(&global_lock);
- idnode_insert(&esf->esf_id, uuid, c, 0);
+ if (idnode_insert(&esf->esf_id, uuid, c, 0)) {
+ if (uuid)
+ tvherror("esfilter", "invalid uuid '%s'", uuid);
+ free(esf);
+ return NULL;
+ }
if (conf)
idnode_load(&esf->esf_id, conf);
if (ESF_CLASS_IS_VALID(cls))
in->in_class = class;
do {
- if (uuid_init_bin(&u, uuid))
+ if (uuid_init_bin(&u, uuid)) {
+ in->in_class = NULL;
return -1;
+ }
memcpy(in->in_uuid, u.bin, sizeof(in->in_uuid));
c = NULL;
( mpegts_input_t *mi, const idclass_t *class, const char *uuid,
htsmsg_t *c )
{
- idnode_insert(&mi->ti_id, uuid, class, 0);
+ if (idnode_insert(&mi->ti_id, uuid, class, 0)) {
+ if (uuid)
+ tvherror("mpegts", "invalid input uuid '%s'", uuid);
+ free(mi);
+ return NULL;
+ }
LIST_INSERT_HEAD(&tvh_inputs, (tvh_input_t*)mi, ti_link);
/* Defaults */
( mpegts_mux_instance_t *mmi, const idclass_t *class, const char *uuid,
mpegts_input_t *mi, mpegts_mux_t *mm )
{
- idnode_insert(&mmi->mmi_id, uuid, class, 0);
// TODO: does this need to be an idnode?
+ if (idnode_insert(&mmi->mmi_id, uuid, class, 0)) {
+ free(mmi);
+ return NULL;
+ }
/* Setup links */
mmi->mmi_mux = mm;
{
char buf[256];
- idnode_insert(&mm->mm_id, uuid, class, 0);
+ if (idnode_insert(&mm->mm_id, uuid, class, 0)) {
+ if (uuid)
+ tvherror("mpegts", "invalid mux uuid '%s'", uuid);
+ free(mm);
+ return NULL;
+ }
/* Enabled by default */
mm->mm_enabled = 1;
}
/* Insert node */
- idnode_insert(&mms->mms_id, uuid, &mpegts_mux_sched_class, 0);
+ if (idnode_insert(&mms->mms_id, uuid, &mpegts_mux_sched_class, 0)) {
+ if (uuid)
+ tvherror("muxsched", "invalid uuid '%s'", uuid);
+ free(mms);
+ return NULL;
+ }
/* Add to list */
LIST_INSERT_HEAD(&mpegts_mux_sched_all, mms, mms_link);
char buf[256];
/* Setup idnode */
- idnode_insert(&mn->mn_id, uuid, idc, 0);
+ if (idnode_insert(&mn->mn_id, uuid, idc, 0)) {
+ if (uuid)
+ tvherror("mpegts", "invalid network uuid '%s'", uuid);
+ free(mn);
+ return NULL;
+ }
/* Default callbacks */
mn->mn_display_name = mpegts_network_display_name;
( service_t *t, const idclass_t *class, const char *uuid,
int source_type, htsmsg_t *conf )
{
- idnode_insert(&t->s_id, uuid, class, 0);
+ if (idnode_insert(&t->s_id, uuid, class, 0)) {
+ if (uuid)
+ tvherror("service", "invalid uuid '%s'", uuid);
+ free(t);
+ return NULL;
+ }
lock_assert(&global_lock);