diff --git a/ext/sctp/gstsctpdec.c b/ext/sctp/gstsctpdec.c index 51a1638214..121f738e5a 100644 --- a/ext/sctp/gstsctpdec.c +++ b/ext/sctp/gstsctpdec.c @@ -539,11 +539,13 @@ get_pad_for_stream_id (GstSctpDec * self, guint16 stream_id) g_object_get (self->sctp_association, "state", &state, NULL); if (state != GST_SCTP_ASSOCIATION_STATE_CONNECTED) { - GST_WARNING_OBJECT (self, + GST_ERROR_OBJECT (self, "The SCTP association must be established before a new stream can be created"); return NULL; } + GST_DEBUG_OBJECT (self, "Creating new pad for stream id %u", stream_id); + if (stream_id > MAX_STREAM_ID) return NULL; @@ -566,7 +568,7 @@ get_pad_for_stream_id (GstSctpDec * self, guint16 stream_id) gst_pad_sticky_events_foreach (self->sink_pad, copy_sticky_events, new_pad); if (!gst_element_add_pad (GST_ELEMENT (self), new_pad)) - goto error_cleanup; + goto error_add; GST_OBJECT_LOCK (self); gst_flow_combiner_add_pad (self->flow_combiner, new_pad); @@ -578,7 +580,8 @@ get_pad_for_stream_id (GstSctpDec * self, guint16 stream_id) gst_object_ref (new_pad); return new_pad; - +error_add: + gst_pad_set_active (new_pad, FALSE); error_cleanup: gst_object_unref (new_pad); return NULL; diff --git a/ext/sctp/gstsctpenc.c b/ext/sctp/gstsctpenc.c index fa7cbd2744..818153dcb7 100644 --- a/ext/sctp/gstsctpenc.c +++ b/ext/sctp/gstsctpenc.c @@ -393,25 +393,32 @@ gst_sctp_enc_request_new_pad (GstElement * element, GstPadTemplate * template, g_object_get (self->sctp_association, "state", &state, NULL); if (state != GST_SCTP_ASSOCIATION_STATE_CONNECTED) { - g_warning - ("The SCTP association must be established before a new stream can be created"); + GST_ERROR_OBJECT + (self, + "The SCTP association must be established before a new stream can be created"); goto invalid_state; } if (!template) goto invalid_parameter; + /* 65535 is not a valid stream id */ if (!new_pad_name || (sscanf (new_pad_name, "sink_%u", &stream_id) != 1) - || stream_id > 65534) /* 65535 is not a valid stream id */ + || stream_id > 65534) { + GST_ERROR_OBJECT + (self, "Invalid sink pad name %s", GST_STR_NULL (new_pad_name)); goto invalid_parameter; + } new_pad = gst_element_get_static_pad (element, new_pad_name); if (new_pad) { gst_object_unref (new_pad); new_pad = NULL; + GST_ERROR_OBJECT (self, "Pad %s already exists", new_pad_name); goto invalid_parameter; } + GST_DEBUG_OBJECT (self, "Creating new pad %s", new_pad_name); new_pad = g_object_new (GST_TYPE_SCTP_ENC_PAD, "name", new_pad_name, "direction", template->direction, "template", template, NULL); @@ -425,6 +432,8 @@ gst_sctp_enc_request_new_pad (GstElement * element, GstPadTemplate * template, sctpenc_pad->ppid = DEFAULT_SCTP_PPID; if (caps) { + GST_DEBUG_OBJECT (self, "Pad %s requested with caps %" GST_PTR_FORMAT, + new_pad_name, caps); get_config_from_caps (caps, &sctpenc_pad->ordered, &sctpenc_pad->reliability, &sctpenc_pad->reliability_param, &new_ppid, &is_new_ppid); @@ -439,11 +448,13 @@ gst_sctp_enc_request_new_pad (GstElement * element, GstPadTemplate * template, goto error_cleanup; if (!gst_element_add_pad (element, new_pad)) - goto error_cleanup; + goto error_add_pad; invalid_state: invalid_parameter: return new_pad; +error_add_pad: + gst_pad_set_active (new_pad, FALSE); error_cleanup: gst_object_unref (new_pad); return NULL;