rtsp-client: RTP Info must exist in PLAY response
authorKristofer Björkström <kristofb@axis.com>
Fri, 30 Aug 2019 12:00:52 +0000 (14:00 +0200)
committerKristofer <kristofer.bjorkstrom@axis.com>
Wed, 4 Sep 2019 07:34:37 +0000 (07:34 +0000)
If RTP Info is missing. Then return GST_RTSP_STS_INTERNAL_SERVER_ERROR

Fixes #76

gst/rtsp-server/rtsp-client.c

index 5dac08b..7c3ea5c 100644 (file)
@@ -2006,7 +2006,8 @@ handle_play_request (GstRTSPClient * client, GstRTSPContext * ctx)
     goto invalid_mode;
 
   /* grab RTPInfo from the media now */
-  rtpinfo = gst_rtsp_session_media_get_rtpinfo (sessmedia);
+  if (!(rtpinfo = gst_rtsp_session_media_get_rtpinfo (sessmedia)))
+    goto rtp_info_error;
 
   /* construct the response now */
   code = GST_RTSP_STS_OK;
@@ -2014,9 +2015,7 @@ handle_play_request (GstRTSPClient * client, GstRTSPContext * ctx)
       gst_rtsp_status_as_text (code), ctx->request);
 
   /* add the RTP-Info header */
-  if (rtpinfo)
-    gst_rtsp_message_take_header (ctx->response, GST_RTSP_HDR_RTP_INFO,
-        rtpinfo);
+  gst_rtsp_message_take_header (ctx->response, GST_RTSP_HDR_RTP_INFO, rtpinfo);
   if (seek_style)
     gst_rtsp_message_add_header (ctx->response, GST_RTSP_HDR_SEEK_STYLE,
         seek_style);
@@ -2138,6 +2137,12 @@ adjust_play_response_failed:
     send_generic_response (client, code, ctx);
     return FALSE;
   }
+rtp_info_error:
+  {
+    GST_ERROR ("client %p: failed to add RTP-Info", client);
+    send_generic_response (client, GST_RTSP_STS_INTERNAL_SERVER_ERROR, ctx);
+    return FALSE;
+  }
 }
 
 static void