OK, then I will create the socket manually, pass it to system's bind() and
use uv_udp_open() with it.

Thanks.

--
Iñaki Baz Castillo
<[email protected]>
On Apr 27, 2014 3:12 PM, "Saúl Ibarra Corretgé" <[email protected]> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 04/27/2014 01:53 PM, Iñaki Baz Castillo wrote:
> > 2014-04-27 13:47 GMT+02:00 Iñaki Baz Castillo <[email protected]>:
> >> I'm building a RTP media server which means I need to bind in
> >> many random UDP ports: for each RTP session I need two sequential
> >> ports, the first for RTP (ex: 15054) and the second for RTCP (ex:
> >> 15055).
> >>
> >> This means that I will check for random ports (I don't want to
> >> keep a list of "used ports" because I use N threads with separate
> >> UV loops and don't want to access shared memory) so uv_udp_bind()
> >> may fail with EADDRINUSE.
> >>
> >> In that case, could I reuse the same uv_udp_t pointer with a new
> >> sockaddr? If so, do I need to call uv_udp_init again for the same
> >> handle?
> >
> >
> > Humm, in uv__udp_bind() I see:
> >
> > -------------------------------------- if (bind(fd, addr, addrlen))
> > { err = -errno; goto out; }
> >
> > [...] return 0;
> >
> > out: uv__close(handle->io_watcher.fd); handle->io_watcher.fd = -1;
> > return err; ----------------------------------
> >
> > So it seems that the socket gets invalidated after uv_udp_bind()
> > fails, and thus I cannot reuse the uv_udp_t handle again with
> > another address, am I right?
> >
>
> Yes. Generally speaking, if any networking related handle fails you
> need to close it and create a new one.
>
>
> - --
> Saúl Ibarra Corretgé
> bettercallsaghul.com
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1
> Comment: Using GnuPG with Icedove - http://www.enigmail.net/
>
> iQIcBAEBAgAGBQJTXQIVAAoJEEEOVVOum8BZqPMP/A80bZSkqS2/G9tBNu3+ppVr
> 14pqaFeJPFLipLhQ7N1faNffstxTm+QxJBUITFQxQQWWGO/uyx/Qci2TZBAy3LRZ
> BTLI9vb+FGeT5LTfvf3VfVdQ7x7SntTGF0ej1tsC9SAiCvBmTTLjmUOmqMdOqxMP
> 2/aHPKLUghsaqZb1Edx/TWs4ReGVAC7tqCXDyHZkjCxGmmQwCyo1GZCqArkiqc6J
> lrClGruYItZbahUnidd9PYcI8r5xG+xsFR37dt3uOPhXXd1VB9E0VyBchJsKhx5V
> ylbk3/u1iWILg5LtQKg5wNuds+2e1zbjDxYZCAvYtazW8CHnnYLYS0aGYrg6xokN
> QqPDb2nxh+o+Yyu8OPE30MZCHPZHrX1lohs0KpqmcICyY7M0zpIQM9CCdhHJWTva
> QVCoRhroqzRKGNsI2irejEPL9xJgtazhraqz00taulLv06xvrpKMIzJDJq6LxP8s
> adPnZ6lQOxdzYJqxCV4Q3PVs6WL9IC782Yp0Jt/oPBQ/4RPks/aP2JRDAdthpExR
> c7qi8PDWY5SJMFF83LrUaCkTRWeUt1HIo8B04JhOmME51X38u7pzB0L2h8OxoMyo
> +Ysg+IbYl43BfSA25NV5iEi9zodFOnoeYxgIFgLZn5TbM57KSoIXSksDwSYdPCXc
> JPQQTlPzKfZrr5/IHgKD
> =FbDN
> -----END PGP SIGNATURE-----
>
> --
> You received this message because you are subscribed to the Google Groups
> "libuv" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/libuv.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to