mirror of
https://github.com/rofafor/vdr-plugin-satip.git
synced 2023-10-10 13:37:42 +02:00
Re-enable to reuse address for msearch protocol.
This commit is contained in:
parent
9d7c745fe1
commit
8222d05f5d
@ -29,7 +29,7 @@ cSatipMsearch::cSatipMsearch(cSatipDiscoverIf &discoverP)
|
|||||||
memset(bufferM, 0, bufferLenM);
|
memset(bufferM, 0, bufferLenM);
|
||||||
else
|
else
|
||||||
error("Cannot create Msearch buffer!");
|
error("Cannot create Msearch buffer!");
|
||||||
if (!Open(eDiscoveryPort))
|
if (!Open(eDiscoveryPort, true))
|
||||||
error("Cannot open Msearch port!");
|
error("Cannot open Msearch port!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
socket.c
8
socket.c
@ -34,10 +34,11 @@ cSatipSocket::~cSatipSocket()
|
|||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cSatipSocket::Open(const int portP, const bool reuseAddrP)
|
bool cSatipSocket::Open(const int portP, const bool reuseP)
|
||||||
{
|
{
|
||||||
// Bind to the socket if it is not active already
|
// Bind to the socket if it is not active already
|
||||||
if (socketDescM < 0) {
|
if (socketDescM < 0) {
|
||||||
|
int yes;
|
||||||
socklen_t len = sizeof(sockAddrM);
|
socklen_t len = sizeof(sockAddrM);
|
||||||
// Create socket
|
// Create socket
|
||||||
socketDescM = socket(PF_INET, SOCK_DGRAM, 0);
|
socketDescM = socket(PF_INET, SOCK_DGRAM, 0);
|
||||||
@ -46,9 +47,12 @@ bool cSatipSocket::Open(const int portP, const bool reuseAddrP)
|
|||||||
ERROR_IF_FUNC(fcntl(socketDescM, F_SETFL, O_NONBLOCK), "fcntl(O_NONBLOCK)",
|
ERROR_IF_FUNC(fcntl(socketDescM, F_SETFL, O_NONBLOCK), "fcntl(O_NONBLOCK)",
|
||||||
Close(), return false);
|
Close(), return false);
|
||||||
// Allow multiple sockets to use the same PORT number
|
// Allow multiple sockets to use the same PORT number
|
||||||
int yes = reuseAddrP;
|
yes = reuseP;
|
||||||
ERROR_IF_FUNC(setsockopt(socketDescM, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) < 0,
|
ERROR_IF_FUNC(setsockopt(socketDescM, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) < 0,
|
||||||
"setsockopt(SO_REUSEADDR)", Close(), return false);
|
"setsockopt(SO_REUSEADDR)", Close(), return false);
|
||||||
|
yes = reuseP;
|
||||||
|
ERROR_IF_FUNC(setsockopt(socketDescM, SOL_SOCKET, SO_REUSEPORT, &yes, sizeof(yes)) < 0 && errno != ENOPROTOOPT,
|
||||||
|
"setsockopt(SO_REUSEPORT)", Close(), return false);
|
||||||
// Bind socket
|
// Bind socket
|
||||||
memset(&sockAddrM, 0, sizeof(sockAddrM));
|
memset(&sockAddrM, 0, sizeof(sockAddrM));
|
||||||
sockAddrM.sin_family = AF_INET;
|
sockAddrM.sin_family = AF_INET;
|
||||||
|
2
socket.h
2
socket.h
@ -19,7 +19,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
cSatipSocket();
|
cSatipSocket();
|
||||||
virtual ~cSatipSocket();
|
virtual ~cSatipSocket();
|
||||||
bool Open(const int portP = 0, const bool reuseAddrP = false);
|
bool Open(const int portP = 0, const bool reuseP = false);
|
||||||
virtual void Close(void);
|
virtual void Close(void);
|
||||||
int Fd(void) { return socketDescM; }
|
int Fd(void) { return socketDescM; }
|
||||||
int Port(void) { return socketPortM; }
|
int Port(void) { return socketPortM; }
|
||||||
|
Loading…
Reference in New Issue
Block a user