Hello,
A Camomile user encounters an
issue with the [netreceive] object. The main patch contains
[netreceive-u -b 15200] and the plugin is loaded several times (if the
plugin is removed and added to the track several times in a row or the
host application closes and reopened several times in a row), the object
fails to connect with the error message "netreceive: listen failed:
Address already in use (48)". Here is the Github issue:
https://github.com/pierreguillot/Camomile/issues/241.
This
issue happens on macOS with the Camomile 1.0.8-beta running with the
latest Pd 0.51-4. The problem is not systematic but is easily
reproducible.
This problem doesn't seem to happen in the
Pd application if only one [netreceive] object listens to a specific
port. If two [netreceive] objects listen to the same port, one of the
objects cannot listen, and the same error message appears. Is it normal?
I
managed to solve this problem by replacing SO_REUSEADDR to SO_REUSEPORT
on the function socket_set_boolopt() (l. 703 of x_net.c). I don't know
much about sockets but I understand that it allows two [netreceive]
objects to use the same address AND the same port. Do you think this is a
proper way of fixing this problem? If so I can create a PR. If not,
what would you suggest?
P.S. It doesn't seem to be compatible with Windows but a simple #if WIN32 would fix it.
Thank you,
Pierre