A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/Haivision/srt/commit/e5a11795326249c65a761b413c90fd2871bdaab1 below:

[core] Fix UDP RCVBUF and SNDBUF on Solaris (#2162). · Haivision/srt@e5a1179 · GitHub

@@ -265,7 +265,81 @@ void srt::CChannel::attach(UDPSOCKET udpsock, const sockaddr_any& udpsocks_addr)

265 265 266 266

void srt::CChannel::setUDPSockOpt()

267 267

{

268 -

#if defined(BSD) || TARGET_OS_MAC

268 +

#if defined(SUNOS)

269 +

{

270 +

socklen_t optSize;

271 +

// Retrieve starting SND/RCV Buffer sizes.

272 +

int startRCVBUF = 0;

273 +

optSize = sizeof(startRCVBUF);

274 +

if (0 != ::getsockopt(m_iSocket, SOL_SOCKET, SO_RCVBUF, (void*)&startRCVBUF, &optSize))

275 +

{

276 +

startRCVBUF = -1;

277 +

}

278 +

int startSNDBUF = 0;

279 +

optSize = sizeof(startSNDBUF);

280 +

if (0 != ::getsockopt(m_iSocket, SOL_SOCKET, SO_SNDBUF, (void*)&startSNDBUF, &optSize))

281 +

{

282 +

startSNDBUF = -1;

283 +

}

284 + 285 +

// SunOS will fail setsockopt() if the requested buffer size exceeds system

286 +

// maximum value.

287 +

// However, do not reduce the buffer size.

288 +

const int maxsize = 64000;

289 +

if (0 !=

290 +

::setsockopt(

291 +

m_iSocket, SOL_SOCKET, SO_RCVBUF, (const char*)&m_mcfg.iUDPRcvBufSize, sizeof m_mcfg.iUDPRcvBufSize))

292 +

{

293 +

int currentRCVBUF = 0;

294 +

optSize = sizeof(currentRCVBUF);

295 +

if (0 != ::getsockopt(m_iSocket, SOL_SOCKET, SO_RCVBUF, (void*)&currentRCVBUF, &optSize))

296 +

{

297 +

currentRCVBUF = -1;

298 +

}

299 +

if (maxsize > currentRCVBUF)

300 +

{

301 +

::setsockopt(m_iSocket, SOL_SOCKET, SO_RCVBUF, (const char*)&maxsize, sizeof maxsize);

302 +

}

303 +

}

304 +

if (0 !=

305 +

::setsockopt(

306 +

m_iSocket, SOL_SOCKET, SO_SNDBUF, (const char*)&m_mcfg.iUDPSndBufSize, sizeof m_mcfg.iUDPSndBufSize))

307 +

{

308 +

int currentSNDBUF = 0;

309 +

optSize = sizeof(currentSNDBUF);

310 +

if (0 != ::getsockopt(m_iSocket, SOL_SOCKET, SO_RCVBUF, (void*)&currentSNDBUF, &optSize))

311 +

{

312 +

currentSNDBUF = -1;

313 +

}

314 +

if (maxsize > currentSNDBUF)

315 +

{

316 +

::setsockopt(m_iSocket, SOL_SOCKET, SO_SNDBUF, (const char*)&maxsize, sizeof maxsize);

317 +

}

318 +

}

319 + 320 +

// Retrieve ending SND/RCV Buffer sizes.

321 +

int endRCVBUF = 0;

322 +

optSize = sizeof(endRCVBUF);

323 +

if (0 != ::getsockopt(m_iSocket, SOL_SOCKET, SO_RCVBUF, (void*)&endRCVBUF, &optSize))

324 +

{

325 +

endRCVBUF = -1;

326 +

}

327 +

int endSNDBUF = 0;

328 +

optSize = sizeof(endSNDBUF);

329 +

if (0 != ::getsockopt(m_iSocket, SOL_SOCKET, SO_SNDBUF, (void*)&endSNDBUF, &optSize))

330 +

{

331 +

endSNDBUF = -1;

332 +

}

333 +

LOGC(kmlog.Debug,

334 +

log << "SO_RCVBUF:"

335 +

<< " startRCVBUF=" << startRCVBUF << " m_mcfg.iUDPRcvBufSize=" << m_mcfg.iUDPRcvBufSize

336 +

<< " endRCVBUF=" << endRCVBUF);

337 +

LOGC(kmlog.Debug,

338 +

log << "SO_SNDBUF:"

339 +

<< " startSNDBUF=" << startSNDBUF << " m_mcfg.iUDPSndBufSize=" << m_mcfg.iUDPSndBufSize

340 +

<< " endSNDBUF=" << endSNDBUF);

341 +

}

342 +

#elif defined(BSD) || TARGET_OS_MAC

269 343

// BSD system will fail setsockopt if the requested buffer size exceeds system maximum value

270 344

int maxsize = 64000;

271 345

if (0 != ::setsockopt(


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4