diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-04-19 14:45:08 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-04-19 14:45:08 +0000 |
commit | 5785c0cfafa18a45734f0e383556219100632d2f (patch) | |
tree | 7012ba34f449e1d79391164395d37e795de9ffc1 /pjmedia/src | |
parent | 3b22580e559c2c649d7f2888b3bc45227f507641 (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/src')
-rw-r--r-- | pjmedia/src/pjmedia/stream.c | 12 |
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)); } } |