summaryrefslogtreecommitdiff
path: root/pjmedia/src/pjmedia/transport_udp.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjmedia/src/pjmedia/transport_udp.c')
-rw-r--r--pjmedia/src/pjmedia/transport_udp.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia/transport_udp.c b/pjmedia/src/pjmedia/transport_udp.c
index 3e288c74..70f16d6d 100644
--- a/pjmedia/src/pjmedia/transport_udp.c
+++ b/pjmedia/src/pjmedia/transport_udp.c
@@ -693,6 +693,48 @@ static pj_status_t transport_attach( pjmedia_transport *tp,
udp->rtp_src_cnt = 0;
udp->rtcp_src_cnt = 0;
+ /* Set buffer size for RTP socket */
+#if PJMEDIA_TRANSPORT_SO_RCVBUF_SIZE
+ {
+ unsigned sobuf_size = PJMEDIA_TRANSPORT_SO_RCVBUF_SIZE;
+ pj_status_t status;
+ status = pj_sock_setsockopt_sobuf(udp->rtp_sock, pj_SO_RCVBUF(),
+ PJ_TRUE, &sobuf_size);
+ if (status != PJ_SUCCESS) {
+ pj_perror(3, tp->name, status, "Failed setting SO_RCVBUF");
+ } else {
+ if (sobuf_size < PJMEDIA_TRANSPORT_SO_RCVBUF_SIZE) {
+ PJ_LOG(4, (tp->name,
+ "Warning! Cannot set SO_RCVBUF as configured, "
+ "now=%d, configured=%d",
+ sobuf_size, PJMEDIA_TRANSPORT_SO_RCVBUF_SIZE));
+ } else {
+ PJ_LOG(5, (tp->name, "SO_RCVBUF set to %d", sobuf_size));
+ }
+ }
+ }
+#endif
+#if PJMEDIA_TRANSPORT_SO_SNDBUF_SIZE
+ {
+ unsigned sobuf_size = PJMEDIA_TRANSPORT_SO_SNDBUF_SIZE;
+ pj_status_t status;
+ status = pj_sock_setsockopt_sobuf(udp->rtp_sock, pj_SO_SNDBUF(),
+ PJ_TRUE, &sobuf_size);
+ if (status != PJ_SUCCESS) {
+ pj_perror(3, tp->name, status, "Failed setting SO_SNDBUF");
+ } else {
+ if (sobuf_size < PJMEDIA_TRANSPORT_SO_SNDBUF_SIZE) {
+ PJ_LOG(4, (tp->name,
+ "Warning! Cannot set SO_SNDBUF as configured, "
+ "now=%d, configured=%d",
+ sobuf_size, PJMEDIA_TRANSPORT_SO_SNDBUF_SIZE));
+ } else {
+ PJ_LOG(5, (tp->name, "SO_SNDBUF set to %d", sobuf_size));
+ }
+ }
+ }
+#endif
+
/* Unlock keys */
pj_ioqueue_unlock_key(udp->rtcp_key);
pj_ioqueue_unlock_key(udp->rtp_key);