goto no_uri;
uri = ctx->uri;
- path = uri->abspath;
+ if (uri->query)
+ path = g_strconcat (uri->abspath, "?", uri->query, NULL);
+ else
+ path = g_strdup (uri->abspath);
/* parse the transport */
res =
break;
}
g_object_unref (session);
+ g_free (path);
g_signal_emit (client, gst_rtsp_client_signals[SIGNAL_SETUP_REQUEST], 0, ctx);
{
GST_ERROR ("client %p: no transport", client);
send_generic_response (client, GST_RTSP_STS_UNSUPPORTED_TRANSPORT, ctx);
+ g_free (path);
return FALSE;
}
no_pool:
{
GST_ERROR ("client %p: no session pool configured", client);
send_generic_response (client, GST_RTSP_STS_SESSION_NOT_FOUND, ctx);
+ g_free (path);
return FALSE;
}
media_not_found_no_reply:
{
GST_ERROR ("client %p: media '%s' not found", client, path);
+ g_free (path);
/* error reply is already sent */
return FALSE;
}
{
GST_ERROR ("client %p: media '%s' not found", client, path);
send_generic_response (client, GST_RTSP_STS_NOT_FOUND, ctx);
+ g_free (path);
return FALSE;
}
control_not_found:
GST_ERROR ("client %p: no control in path '%s'", client, path);
send_generic_response (client, GST_RTSP_STS_NOT_FOUND, ctx);
g_object_unref (media);
+ g_free (path);
return FALSE;
}
stream_not_found:
GST_ERROR ("client %p: stream '%s' not found", client, control);
send_generic_response (client, GST_RTSP_STS_NOT_FOUND, ctx);
g_object_unref (media);
+ g_free (path);
return FALSE;
}
service_unavailable:
GST_ERROR ("client %p: can't create session", client);
send_generic_response (client, GST_RTSP_STS_SERVICE_UNAVAILABLE, ctx);
g_object_unref (media);
+ g_free (path);
return FALSE;
}
sessmedia_unavailable:
send_generic_response (client, GST_RTSP_STS_SERVICE_UNAVAILABLE, ctx);
g_object_unref (media);
g_object_unref (session);
+ g_free (path);
return FALSE;
}
invalid_blocksize:
GST_ERROR ("client %p: invalid blocksize", client);
send_generic_response (client, GST_RTSP_STS_BAD_REQUEST, ctx);
g_object_unref (session);
+ g_free (path);
return FALSE;
}
unsupported_transports:
send_generic_response (client, GST_RTSP_STS_UNSUPPORTED_TRANSPORT, ctx);
gst_rtsp_transport_free (ct);
g_object_unref (session);
+ g_free (path);
return FALSE;
}
unsupported_client_transport:
send_generic_response (client, GST_RTSP_STS_UNSUPPORTED_TRANSPORT, ctx);
gst_rtsp_transport_free (ct);
g_object_unref (session);
+ g_free (path);
return FALSE;
}
}