mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
gst/rtsp/: Improve error reporting.
Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop), (gst_rtspsrc_send), (gst_rtspsrc_open): * gst/rtsp/rtspconnection.c: (rtsp_connection_create), (rtsp_connection_connect), (rtsp_connection_read), (read_body), (rtsp_connection_receive): * gst/rtsp/rtspdefs.c: (rtsp_strresult): * gst/rtsp/rtspdefs.h: Improve error reporting.
This commit is contained in:
parent
af6e4da92e
commit
23ec2eb189
5 changed files with 100 additions and 23 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2006-09-23 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop), (gst_rtspsrc_send),
|
||||||
|
(gst_rtspsrc_open):
|
||||||
|
* gst/rtsp/rtspconnection.c: (rtsp_connection_create),
|
||||||
|
(rtsp_connection_connect), (rtsp_connection_read), (read_body),
|
||||||
|
(rtsp_connection_receive):
|
||||||
|
* gst/rtsp/rtspdefs.c: (rtsp_strresult):
|
||||||
|
* gst/rtsp/rtspdefs.h:
|
||||||
|
Improve error reporting.
|
||||||
|
|
||||||
2006-09-23 Wim Taymans <wim@fluendo.com>
|
2006-09-23 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
* gst/rtp/gstasteriskh263.c: (gst_asteriskh263_plugin_init):
|
* gst/rtp/gstasteriskh263.c: (gst_asteriskh263_plugin_init):
|
||||||
|
|
|
@ -1000,17 +1000,11 @@ unknown_stream:
|
||||||
}
|
}
|
||||||
receive_error:
|
receive_error:
|
||||||
{
|
{
|
||||||
switch (res) {
|
gchar *str = rtsp_strresult (res);
|
||||||
case RTSP_ESYS:
|
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, READ,
|
GST_ELEMENT_ERROR (src, RESOURCE, READ,
|
||||||
("Could not receive message. (%d: %s)", res, strerror (errno)),
|
("Could not receive message. (%s)", str), (NULL));
|
||||||
GST_ERROR_SYSTEM);
|
g_free (str);
|
||||||
break;
|
|
||||||
default:
|
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, READ,
|
|
||||||
("Could not receive message. (%d)", res), (NULL));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (src->debug)
|
if (src->debug)
|
||||||
rtsp_message_dump (&response);
|
rtsp_message_dump (&response);
|
||||||
rtsp_message_unset (&response);
|
rtsp_message_unset (&response);
|
||||||
|
@ -1103,14 +1097,20 @@ gst_rtspsrc_send (GstRTSPSrc * src, RTSPMessage * request,
|
||||||
/* ERRORS */
|
/* ERRORS */
|
||||||
send_error:
|
send_error:
|
||||||
{
|
{
|
||||||
|
gchar *str = rtsp_strresult (res);
|
||||||
|
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, WRITE,
|
GST_ELEMENT_ERROR (src, RESOURCE, WRITE,
|
||||||
("Could not send message."), (NULL));
|
("Could not send message. (%s)", res), (NULL));
|
||||||
|
g_free (str);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
receive_error:
|
receive_error:
|
||||||
{
|
{
|
||||||
|
gchar *str = rtsp_strresult (res);
|
||||||
|
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, READ,
|
GST_ELEMENT_ERROR (src, RESOURCE, READ,
|
||||||
("Could not receive message."), (NULL));
|
("Could not receive message. (%s)", str), (NULL));
|
||||||
|
g_free (str);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
error_response:
|
error_response:
|
||||||
|
@ -1467,26 +1467,38 @@ no_url:
|
||||||
}
|
}
|
||||||
could_not_create:
|
could_not_create:
|
||||||
{
|
{
|
||||||
|
gchar *str = rtsp_strresult (res);
|
||||||
|
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE,
|
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE,
|
||||||
("Could not create connection."), (NULL));
|
("Could not create connection. (%s)", str), (NULL));
|
||||||
|
g_free (str);
|
||||||
goto cleanup_error;
|
goto cleanup_error;
|
||||||
}
|
}
|
||||||
could_not_connect:
|
could_not_connect:
|
||||||
{
|
{
|
||||||
|
gchar *str = rtsp_strresult (res);
|
||||||
|
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE,
|
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE,
|
||||||
("Could not connect to server."), (NULL));
|
("Could not connect to server. (%s)", str), (NULL));
|
||||||
|
g_free (str);
|
||||||
goto cleanup_error;
|
goto cleanup_error;
|
||||||
}
|
}
|
||||||
create_request_failed:
|
create_request_failed:
|
||||||
{
|
{
|
||||||
|
gchar *str = rtsp_strresult (res);
|
||||||
|
|
||||||
GST_ELEMENT_ERROR (src, LIBRARY, INIT,
|
GST_ELEMENT_ERROR (src, LIBRARY, INIT,
|
||||||
("Could not create request."), (NULL));
|
("Could not create request. (%s)", str), (NULL));
|
||||||
|
g_free (str);
|
||||||
goto cleanup_error;
|
goto cleanup_error;
|
||||||
}
|
}
|
||||||
send_error:
|
send_error:
|
||||||
{
|
{
|
||||||
|
gchar *str = rtsp_strresult (res);
|
||||||
|
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, WRITE,
|
GST_ELEMENT_ERROR (src, RESOURCE, WRITE,
|
||||||
("Could not send message."), (NULL));
|
("Could not send message. (%s)", str), (NULL));
|
||||||
|
g_free (str);
|
||||||
goto cleanup_error;
|
goto cleanup_error;
|
||||||
}
|
}
|
||||||
methods_error:
|
methods_error:
|
||||||
|
|
|
@ -206,13 +206,11 @@ sys_error:
|
||||||
}
|
}
|
||||||
not_resolved:
|
not_resolved:
|
||||||
{
|
{
|
||||||
g_warning ("could not resolve host \"%s\"\n", url->host);
|
return RTSP_ENET;
|
||||||
return RTSP_ESYS;
|
|
||||||
}
|
}
|
||||||
not_ip:
|
not_ip:
|
||||||
{
|
{
|
||||||
g_warning ("host \"%s\" is not IP\n", url->host);
|
return RTSP_ENOTIP;
|
||||||
return RTSP_ESYS;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,34 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
extern int h_errno;
|
||||||
|
|
||||||
|
#include <netdb.h>
|
||||||
|
|
||||||
#include "rtspdefs.h"
|
#include "rtspdefs.h"
|
||||||
|
|
||||||
const gchar *rtsp_methods[] = {
|
static const gchar *rtsp_results[] = {
|
||||||
|
"OK",
|
||||||
|
/* errors */
|
||||||
|
"Invalid parameter specified",
|
||||||
|
"Operation interrupted",
|
||||||
|
"Out of memory",
|
||||||
|
"Cannot resolve host",
|
||||||
|
"Function not implemented",
|
||||||
|
"System error: '%s'",
|
||||||
|
"Parse error",
|
||||||
|
"Error on WSAStartup",
|
||||||
|
"Windows sockets are not version 0x202",
|
||||||
|
"Received end-of-file",
|
||||||
|
"Network error: %s",
|
||||||
|
"Host is not a valid IP address",
|
||||||
|
"Unknown error (%d)",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static const gchar *rtsp_methods[] = {
|
||||||
"DESCRIBE",
|
"DESCRIBE",
|
||||||
"ANNOUNCE",
|
"ANNOUNCE",
|
||||||
"GET_PARAMETER",
|
"GET_PARAMETER",
|
||||||
|
@ -57,7 +82,7 @@ const gchar *rtsp_methods[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
const gchar *rtsp_headers[] = {
|
static const gchar *rtsp_headers[] = {
|
||||||
"Accept", /* Accept R opt. entity */
|
"Accept", /* Accept R opt. entity */
|
||||||
"Accept-Encoding", /* Accept-Encoding R opt. entity */
|
"Accept-Encoding", /* Accept-Encoding R opt. entity */
|
||||||
"Accept-Language", /* Accept-Language R opt. all */
|
"Accept-Language", /* Accept-Language R opt. all */
|
||||||
|
@ -156,6 +181,32 @@ rtsp_init_status (void)
|
||||||
DEF_STATUS (RTSP_STS_OPTION_NOT_SUPPORTED, "Option not supported");
|
DEF_STATUS (RTSP_STS_OPTION_NOT_SUPPORTED, "Option not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gchar *
|
||||||
|
rtsp_strresult (RTSPResult result)
|
||||||
|
{
|
||||||
|
gint idx;
|
||||||
|
gchar *res;
|
||||||
|
|
||||||
|
idx = ABS (result);
|
||||||
|
idx = CLAMP (idx, 0, -RTSP_ELAST);
|
||||||
|
|
||||||
|
switch (idx) {
|
||||||
|
case -RTSP_ESYS:
|
||||||
|
res = g_strdup_printf (rtsp_results[idx], g_strerror (errno));
|
||||||
|
break;
|
||||||
|
case -RTSP_ENET:
|
||||||
|
res = g_strdup_printf (rtsp_results[idx], hstrerror (h_errno));
|
||||||
|
break;
|
||||||
|
case -RTSP_ELAST:
|
||||||
|
res = g_strdup_printf (rtsp_results[idx], result);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
res = g_strdup (rtsp_results[idx]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
const gchar *
|
const gchar *
|
||||||
rtsp_method_as_text (RTSPMethod method)
|
rtsp_method_as_text (RTSPMethod method)
|
||||||
{
|
{
|
||||||
|
|
|
@ -63,7 +63,10 @@ typedef enum {
|
||||||
RTSP_EWSASTART = -8,
|
RTSP_EWSASTART = -8,
|
||||||
RTSP_EWSAVERSION = -9,
|
RTSP_EWSAVERSION = -9,
|
||||||
RTSP_EEOF = -10,
|
RTSP_EEOF = -10,
|
||||||
|
RTSP_ENET = -11,
|
||||||
|
RTSP_ENOTIP = -12,
|
||||||
|
|
||||||
|
RTSP_ELAST = -13,
|
||||||
} RTSPResult;
|
} RTSPResult;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -197,6 +200,8 @@ typedef enum {
|
||||||
RTSP_STS_OPTION_NOT_SUPPORTED = 551,
|
RTSP_STS_OPTION_NOT_SUPPORTED = 551,
|
||||||
} RTSPStatusCode;
|
} RTSPStatusCode;
|
||||||
|
|
||||||
|
gchar* rtsp_strresult (RTSPResult result);
|
||||||
|
|
||||||
const gchar* rtsp_method_as_text (RTSPMethod method);
|
const gchar* rtsp_method_as_text (RTSPMethod method);
|
||||||
const gchar* rtsp_header_as_text (RTSPHeaderField field);
|
const gchar* rtsp_header_as_text (RTSPHeaderField field);
|
||||||
const gchar* rtsp_status_as_text (RTSPStatusCode code);
|
const gchar* rtsp_status_as_text (RTSPStatusCode code);
|
||||||
|
|
Loading…
Reference in a new issue