aboutsummaryrefslogtreecommitdiffstats
path: root/rtp.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-03-29 17:14:33 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-03-29 17:14:33 +0000
commitf9a9d3a9224b3198dd68ee653461e2ca3ed676ba (patch)
tree11af8fa47e81c37ca4e960157df1637241049a19 /rtp.c
parent486c3c419f027962b714a0029014b6724226f4ac (diff)
If an error occurs when reading from an RTP socket, and the error code does not
indicate that we should try again, then return NULL instead of a "null frame". This will prevent Asterisk from trying over and over again, and eventually causing the system to crash. (issue #8285, john) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@59357 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'rtp.c')
-rw-r--r--rtp.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/rtp.c b/rtp.c
index 13dab38dc..ce85b4551 100644
--- a/rtp.c
+++ b/rtp.c
@@ -386,10 +386,12 @@ struct ast_frame *ast_rtcp_read(struct ast_rtp *rtp)
0, (struct sockaddr *)&sin, &len);
if (res < 0) {
- if (errno != EAGAIN)
- ast_log(LOG_WARNING, "RTP Read error: %s\n", strerror(errno));
if (errno == EBADF)
CRASH;
+ if (errno != EAGAIN) {
+ ast_log(LOG_WARNING, "RTP Read error: %s. Hanging up now.\n", strerror(errno));
+ return NULL;
+ }
return &null_frame;
}
@@ -453,10 +455,12 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
rtpheader = (unsigned int *)(rtp->rawdata + AST_FRIENDLY_OFFSET);
if (res < 0) {
- if (errno != EAGAIN)
- ast_log(LOG_WARNING, "RTP Read error: %s\n", strerror(errno));
if (errno == EBADF)
CRASH;
+ if (errno != EAGAIN) {
+ ast_log(LOG_WARNING, "RTP Read error: %s. Hanging up now.\n", strerror(errno));
+ return NULL;
+ }
return &null_frame;
}
if (res < hdrlen) {