1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

For #307, enable REUSEPORT to increase UDP buffer

This commit is contained in:
winlin 2020-04-12 08:55:43 +08:00
parent a7f2bde8e2
commit 78aad11eeb
6 changed files with 54 additions and 10 deletions

View file

@ -1332,7 +1332,6 @@ srs_error_t SrsRtcSession::on_rtcp(SrsUdpMuxSocket* skt)
SrsRtcServer::SrsRtcServer()
{
listener = NULL;
timer = new SrsHourGlass(this, 1 * SRS_UTIME_SECONDS);
mmstfd = NULL;
@ -1349,7 +1348,12 @@ SrsRtcServer::~SrsRtcServer()
{
_srs_config->unsubscribe(this);
srs_freep(listener);
vector<SrsUdpMuxListener*>::iterator it;
for (it = listeners.begin(); it != listeners.end(); ++it) {
SrsUdpMuxListener* listener = *it;
srs_freep(listener);
}
srs_freep(timer);
srs_freep(trd);
@ -1400,16 +1404,21 @@ srs_error_t SrsRtcServer::listen_udp()
}
string ip = srs_any_address_for_listener();
srs_assert(listeners.empty());
srs_freep(listener);
listener = new SrsUdpMuxListener(this, ip, port);
int nn_listeners = _srs_config->get_rtc_server_reuseport();
for (int i = 0; i < nn_listeners; i++) {
SrsUdpMuxListener* listener = new SrsUdpMuxListener(this, ip, port);
if ((err = listener->listen()) != srs_success) {
return srs_error_wrap(err, "listen %s:%d", ip.c_str(), port);
if ((err = listener->listen()) != srs_success) {
srs_freep(listener);
return srs_error_wrap(err, "listen %s:%d", ip.c_str(), port);
}
srs_trace("rtc listen at udp://%s:%d, fd=%d", ip.c_str(), port, listener->fd());
listeners.push_back(listener);
}
srs_trace("rtc listen at udp://%s:%d, fd=%d", ip.c_str(), port, listener->fd());
return err;
}