summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-04-19 14:45:08 +0000
committerBenny Prijono <bennylp@teluu.com>2006-04-19 14:45:08 +0000
commit5785c0cfafa18a45734f0e383556219100632d2f (patch)
tree7012ba34f449e1d79391164395d37e795de9ffc1 /pjmedia
parent3b22580e559c2c649d7f2888b3bc45227f507641 (diff)
Changed stream.c so it won't quit after recvfrom returns ECONNRESET
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@402 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia/stream.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/pjmedia/src/pjmedia/stream.c b/pjmedia/src/pjmedia/stream.c
index 68cd2c9a..f63d2abb 100644
--- a/pjmedia/src/pjmedia/stream.c
+++ b/pjmedia/src/pjmedia/stream.c
@@ -508,6 +508,8 @@ static void on_rx_rtp( pj_ioqueue_key_t *key,
if (bytes_read == 0)
goto read_next_packet;
+ if (bytes_read < 0)
+ goto read_next_packet;
/* Update RTP and RTCP session. */
status = pjmedia_rtp_decode_rtp(&channel->rtp,
@@ -589,13 +591,19 @@ read_next_packet:
&stream->rtp_src_addr,
&stream->rtp_addrlen);
- } while (status == PJ_SUCCESS);
+ if (status != PJ_SUCCESS) {
+ bytes_read = -status;
+ }
+
+ } while (status == PJ_SUCCESS ||
+ status == PJ_STATUS_FROM_OS(OSERR_ECONNRESET));
if (status != PJ_SUCCESS && status != PJ_EPENDING) {
char errmsg[PJ_ERR_MSG_SIZE];
pj_strerror(status, errmsg, sizeof(errmsg));
- PJ_LOG(4,(THIS_FILE, "Error reading RTP packet: %s [status=%d]",
+ PJ_LOG(4,(THIS_FILE, "Error reading RTP packet: %s [status=%d]. "
+ "RTP stream thread quitting!",
errmsg, status));
}
}