client: error out on non-aggregate control

We require aggregate control (for now) for PLAY, PAUSE and TEARDOWN.
This commit is contained in:
Wim Taymans 2013-07-03 16:15:04 +02:00
parent 9182263532
commit a1e5bde58d

View file

@ -727,6 +727,10 @@ handle_teardown_request (GstRTSPClient * client, GstRTSPClientState * state)
if (!sessmedia)
goto not_found;
/* only aggregate control for now.. */
if (path[matched] != '\0')
goto no_aggregate;
state->sessmedia = sessmedia;
/* we emit the signal before closing the connection */
@ -775,6 +779,13 @@ not_found:
send_generic_response (client, GST_RTSP_STS_NOT_FOUND, state);
return FALSE;
}
no_aggregate:
{
GST_ERROR ("client %p: no aggregate path %s", client, path);
send_generic_response (client,
GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED, state);
return FALSE;
}
}
static GstRTSPResult
@ -894,6 +905,9 @@ handle_pause_request (GstRTSPClient * client, GstRTSPClientState * state)
if (!sessmedia)
goto not_found;
if (path[matched] != '\0')
goto no_aggregate;
state->sessmedia = sessmedia;
rtspstate = gst_rtsp_session_media_get_rtsp_state (sessmedia);
@ -942,6 +956,13 @@ not_found:
send_generic_response (client, GST_RTSP_STS_NOT_FOUND, state);
return FALSE;
}
no_aggregate:
{
GST_ERROR ("client %p: no aggregate path %s", client, path);
send_generic_response (client,
GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED, state);
return FALSE;
}
invalid_state:
{
GST_ERROR ("client %p: not PLAYING or RECORDING", client);
@ -981,6 +1002,9 @@ handle_play_request (GstRTSPClient * client, GstRTSPClientState * state)
if (!sessmedia)
goto not_found;
if (path[matched] != '\0')
goto no_aggregate;
state->sessmedia = sessmedia;
state->media = media = gst_rtsp_session_media_get_media (sessmedia);
@ -1089,6 +1113,13 @@ not_found:
send_generic_response (client, GST_RTSP_STS_NOT_FOUND, state);
return FALSE;
}
no_aggregate:
{
GST_ERROR ("client %p: no aggregate path %s", client, path);
send_generic_response (client,
GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED, state);
return FALSE;
}
invalid_state:
{
GST_ERROR ("client %p: not PLAYING or READY", client);