|
|
|
@ -1930,6 +1930,10 @@ static void kernelize(struct packet_stream *stream) { |
|
|
|
if (!stream->selected_sfd) |
|
|
|
goto no_kernel; |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
LOCK(&stream->selected_sfd->lock); |
|
|
|
|
|
|
|
if (stream->selected_sfd->kernelized) |
|
|
|
return; |
|
|
|
|
|
|
|
@ -2006,6 +2010,8 @@ static void kernelize(struct packet_stream *stream) { |
|
|
|
stream->kernel_time_us = rtpe_now; |
|
|
|
stream->selected_sfd->kernelized = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
no_kernel_warn: |
|
|
|
@ -3936,6 +3942,7 @@ static void stream_fd_free(stream_fd *f) { |
|
|
|
release_port(&f->spl); |
|
|
|
crypto_cleanup(&f->crypto); |
|
|
|
dtls_connection_cleanup(&f->dtls); |
|
|
|
mutex_destroy(&f->lock); |
|
|
|
|
|
|
|
obj_put(f->call); |
|
|
|
} |
|
|
|
@ -3945,6 +3952,7 @@ stream_fd *stream_fd_new(struct socket_port_link *spl, call_t *call, struct loca |
|
|
|
struct poller_item pi; |
|
|
|
|
|
|
|
sfd = obj_alloc0(stream_fd, stream_fd_free); |
|
|
|
mutex_init(&sfd->lock); |
|
|
|
sfd->unique_id = t_queue_get_length(&call->stream_fds); |
|
|
|
sfd->call = obj_get(call); |
|
|
|
sfd->local_intf = lif; |
|
|
|
|