]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
htsp: Remove the broken signal status updates (causing crashes)
authorAndreas Öman <andreas@lonelycoder.com>
Fri, 8 Jun 2012 05:56:38 +0000 (07:56 +0200)
committerAndreas Öman <andreas@lonelycoder.com>
Fri, 8 Jun 2012 05:56:38 +0000 (07:56 +0200)
htsp->hs_s may only be accessed if global_lock is held and obtaining
global_lock in HTSP delivery code is not acceptable as it can take
a long time to acquire that lock

Fixes #1029

src/dvb/dvb.h
src/dvb/dvb_transport.c
src/htsp.c
src/service.c
src/service.h

index ad9c30fbcdbad00fcadfd74ddc81cd109a34b2db..80ff45566ebbc68a86c5ade4617b6a80d138b751 100644 (file)
@@ -314,9 +314,6 @@ void dvb_transport_notify_by_adapter(th_dvb_adapter_t *tda);
 
 htsmsg_t *dvb_transport_build_msg(struct service *t);
 
-int dvb_transport_get_signal_status(struct service *t,
-                                   signal_status_t *status);
-
 /**
  * DVB Frontend
  */
index ad41234fca241996d41f884bfc074e2d7c0deddb..38f27768ed3c481a648bb2b59fc9663bb7d5f1ec 100644 (file)
@@ -476,20 +476,3 @@ dvb_transport_notify(service_t *t)
   htsmsg_add_str(m, "adapterId", tdmi->tdmi_adapter->tda_identifier);
   notify_by_msg("dvbService", m);
 }
-
-
-/**
- * Get the signal status from a DVB transport
- */
-int
-dvb_transport_get_signal_status(service_t *t, signal_status_t *status)
-{
-  th_dvb_mux_instance_t *tdmi = t->s_dvb_mux_instance;
-
-  status->status_text = dvb_mux_status(tdmi);
-  status->snr         = tdmi->tdmi_snr;
-  status->signal      = tdmi->tdmi_signal;
-  status->ber         = tdmi->tdmi_ber;
-  status->unc         = tdmi->tdmi_uncorrected_blocks;
-  return 0;
-}
index af897f07c3e133b13ad276a71a3b11cdc683389c..b9fc3e17db9be8168c99ec8bfe78ccf5bdc02129 100644 (file)
@@ -1580,7 +1580,6 @@ htsp_stream_deliver(htsp_subscription_t *hs, th_pkt_t *pkt)
   htsp_send(htsp, m, pkt->pkt_payload, &hs->hs_q, pktbuf_len(pkt->pkt_payload));
 
   if(hs->hs_last_report != dispatch_clock) {
-    signal_status_t status;
 
     /* Send a queue and signal status report every second */
 
@@ -1614,26 +1613,6 @@ htsp_stream_deliver(htsp_subscription_t *hs, th_pkt_t *pkt)
     /* We use a special queue for queue status message so they're not
        blocked by anything else */
     htsp_send_message(hs->hs_htsp, m, &hs->hs_htsp->htsp_hmq_qstatus);
-
-
-    if(!service_get_signal_status(hs->hs_s->ths_service, &status)) {
-
-      m = htsmsg_create_map();
-      htsmsg_add_str(m, "method", "signalStatus");
-      htsmsg_add_u32(m, "subscriptionId", hs->hs_sid);
-
-      htsmsg_add_str(m, "feStatus",   status.status_text);
-      if(status.snr != -2)
-       htsmsg_add_u32(m, "feSNR",    status.snr);
-      if(status.signal != -2)
-       htsmsg_add_u32(m, "feSignal", status.signal);
-      if(status.ber != -2)
-       htsmsg_add_u32(m, "feBER",    status.ber);
-      if(status.unc != -2)
-       htsmsg_add_u32(m, "feUNC",    status.unc);
-      htsp_send_message(hs->hs_htsp, m, &hs->hs_htsp->htsp_hmq_qstatus);
-    }
-
   }
   pkt_ref_dec(pkt);
 }
index 1a405d1af412bb7c07ec96e895817a7975fac761..515c39796b2617233c6bfed5664e71e349c183ec 100644 (file)
@@ -1092,22 +1092,3 @@ service_get_encryption(service_t *t)
   }
   return 0;
 }
-
-
-/**
- * Get the signal status from a service
- */
-int
-service_get_signal_status(service_t *t, signal_status_t *status)
-{
-  // get signal status from the service
-  switch(t->s_type) {
-#if ENABLE_LINUXDVB
-  case SERVICE_TYPE_DVB:
-    return dvb_transport_get_signal_status(t, status);
-#endif
-  default:
-    return -1;
-  }
-}
-
index 2185e42250e557090c69bae0cb82402e1b83ee1f..db6213a8bc03281e9b6075f1180139ef78fc5cac 100644 (file)
@@ -570,8 +570,6 @@ int tss2errcode(int tss);
 
 uint16_t service_get_encryption(service_t *t);
 
-int service_get_signal_status(service_t *t, signal_status_t *status);
-
 void service_set_dvb_default_charset(service_t *t, const char *dvb_default_charset);
 
 void service_set_dvb_eit_enable(service_t *t, int dvb_eit_enable);