[PATCH 9/9] Fixed problem of mute audio on some calls

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Alexey Shamrin shamrin at gmail.com
Wed Feb 19 10:51:40 UTC 2014


Hi Andreas,

19.02.2014, в 10:57, Andreas Eversberg <jolly at eversberg.eu> написал(а):

> When reading from RTP socket, the first read() may fail right after
> connecting to remote socket. Subsequent read() will work as it should.
> 
> If the remote socket does not open fast enough, the transmitted RTP
> payload can cause an ICMP (connection refused) packet reply. This causes
> the read to fail with errno=111. In all other error cases, the errno is
> logged at debug level. In all error cases, reading is not disabled.
> ---
> openbsc/src/libtrau/rtp_proxy.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/openbsc/src/libtrau/rtp_proxy.c b/openbsc/src/libtrau/rtp_proxy.c
> index ad3dbb6..52abad0 100644
> --- a/openbsc/src/libtrau/rtp_proxy.c
> +++ b/openbsc/src/libtrau/rtp_proxy.c
> @@ -497,9 +497,16 @@ static int rtp_socket_read(struct rtp_socket *rs, struct rtp_sub_socket *rss)
>        return -ENOMEM;
> 
>    rc = read(rss->bfd.fd, msg->data, RTP_ALLOC_SIZE);
> -    if (rc <= 0) {
> -        rss->bfd.when &= ~BSC_FD_READ;
> -        return rc;
> +    if (rc == 0)
> +        goto out_free;
> +    if (rc < 0) {
> +        /* Ignore "connection refused". this happens, If we open the
> +         * socket faster than the remove side. */

Typo? s/remove/remote/

> +        if (errno == ECONNREFUSED)
> +            goto out_free;
> +        DEBUGPC(DLMUX, "Read of RTP socket (%p) failed (errno %d, "
> +            "%s)\n", rs, errno, strerror(errno));
> +        goto out_free;
>    }
> 
>    msgb_put(msg, rc);
> -- 
> 1.8.1.5
> 
> 




More information about the OpenBSC mailing list