|
|
|
|
@ -527,7 +527,7 @@ void callmaster_msg_mh_src(struct callmaster *cm, struct msghdr *mh) {
|
|
|
|
|
|
|
|
|
|
/* called lock-free */
|
|
|
|
|
static int stream_packet(struct stream_fd *sfd, str *s, struct sockaddr_in6 *fsin) {
|
|
|
|
|
struct packet_stream *stream = sfd->stream,
|
|
|
|
|
struct packet_stream *stream,
|
|
|
|
|
*sink = NULL,
|
|
|
|
|
*in_srtp, *out_srtp;
|
|
|
|
|
struct call_media *media;
|
|
|
|
|
@ -544,16 +544,20 @@ static int stream_packet(struct stream_fd *sfd, str *s, struct sockaddr_in6 *fsi
|
|
|
|
|
struct endpoint endpoint;
|
|
|
|
|
rewrite_func rwf_in, rwf_out;
|
|
|
|
|
|
|
|
|
|
if (!stream)
|
|
|
|
|
return 0;
|
|
|
|
|
media = stream->media;
|
|
|
|
|
call = stream->call;
|
|
|
|
|
call = sfd->call;
|
|
|
|
|
cm = call->callmaster;
|
|
|
|
|
smart_ntop_port(addr, fsin, sizeof(addr));
|
|
|
|
|
|
|
|
|
|
rwlock_lock_r(&call->master_lock);
|
|
|
|
|
|
|
|
|
|
stream = sfd->stream;
|
|
|
|
|
if (!stream)
|
|
|
|
|
goto unlock_out;
|
|
|
|
|
|
|
|
|
|
mutex_lock(&stream->in_lock);
|
|
|
|
|
|
|
|
|
|
media = stream->media;
|
|
|
|
|
|
|
|
|
|
if (!stream->sfd)
|
|
|
|
|
goto done;
|
|
|
|
|
|
|
|
|
|
@ -764,6 +768,7 @@ done:
|
|
|
|
|
stream_unkernelize(stream->rtp_sink);
|
|
|
|
|
stream_unkernelize(stream->rtcp_sink);
|
|
|
|
|
}
|
|
|
|
|
unlock_out:
|
|
|
|
|
rwlock_unlock_r(&call->master_lock);
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
|