SAT-IP-Fix-Interlaved-TCP-deadlock.diff

Patch - Mono Polimorph, 2017-08-09 17:31

Download (979 Bytes)

View differences:

src/satip/rtp.c
33 33

  
34 34
#define RTP_PACKETS 128
35 35
#define RTP_PAYLOAD (7*188+12)
36
#define RTP_TCP_PAYLOAD (87*188+12+4) /* cca 16kB */
36
#define RTP_TCP_PAYLOAD ((7*6*188)+12+4) /* less than 8kB (FFMpeg and others have troubles with >8kB) */
37 37
#define RTCP_PAYLOAD (1420)
38 38

  
39 39
typedef struct satip_rtp_table {
......
592 592
  tvh_cond_signal(&sq->sq_cond, 0);
593 593
  pthread_mutex_unlock(&sq->sq_mutex);
594 594
  pthread_mutex_unlock(&satip_rtp_lock);
595
  if (rtp->port == RTSP_TCP_DATA)
596
    pthread_mutex_lock(rtp->tcp_lock);
597 595
  pthread_join(rtp->tid, NULL);
598 596
  if (rtp->port == RTSP_TCP_DATA) {
599
    pthread_mutex_unlock(rtp->tcp_lock);
597
    pthread_mutex_lock(rtp->tcp_lock);
600 598
    free(rtp->tcp_data.iov_base);
599
    pthread_mutex_unlock(rtp->tcp_lock);
601 600
  } else {
602 601
    udp_multisend_free(&rtp->um);
603 602
  }