Changeset 10896


Ignore:
Timestamp:
11/02/11 00:35:39 (11 years ago)
Author:
nit
Message:

[titan] don't encrypt a service more then one time

Location:
titan/titan
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/cam.h

    r10858 r10896  
    8787
    8888        buf[0] = 0x9F; // ca_pmt_tag
    89         buf[1] = 0x80; // ca_pmt_tag
    90         buf[2] = 0x3f; // ca_pmt_tag
    91         buf[3] = 0x04; // ca_pmt_tag
    92         buf[4] = 0x83; // ca_pmt_tag
    93         buf[5] = 0x02; // ca_pmt_tag
    94         buf[6] = 0x00; // ca_pmt_tag
     89        buf[1] = 0x80; // ca_pmt_tag
     90        buf[2] = 0x3f; // ca_pmt_tag
     91        buf[3] = 0x04; // ca_pmt_tag
     92        buf[4] = 0x83; // ca_pmt_tag
     93        buf[5] = 0x02; // ca_pmt_tag
     94        buf[6] = 0x00; // ca_pmt_tag
    9595        buf[7] = node->fedev->devnr; //demux_dev_nr
    9696        sendcapmttosock(node, buf, 8);
     
    9999}
    100100
    101 //flag 0 = close old socket
    102 //flag 1 = don't close old socket
     101//flag 0 = from zap or record
     102//flag 1 = from watchthread
    103103//flag 2 = send to ca
    104104void sendcapmt(struct service* node, int flag)
     
    112112                return;
    113113        }
    114 
    115114        if(node->channel == NULL)
    116115        {
     
    141140        {
    142141                debug(250, "no frontend");
     142                nok = 1;
     143        }
     144        if(checkdoubleservice(node) != NULL)
     145        {
     146                debug(250, "other service makes encrypt");
    143147                nok = 1;
    144148        }
     
    157161        {
    158162                free(buf);
    159                 sockclose(&node->camsockfd);
    160                 return;
    161         }
    162         if(flag == 0) sockclose(&node->camsockfd);
     163                return;
     164        }
     165
     166        if(node->camsockfd > -1)
     167                camsockclose(node);
    163168
    164169        memset(buf, 0, MINMALLOC);
     
    269274        {
    270275#ifdef CAMSUPP
    271                 sendcapmttocam(buf, pos);
     276                sendcapmttocam(node, buf, pos);
    272277#endif
    273278        }
     
    294299                        ret = sockcheck(&node->camsockfd);
    295300
    296                         if(checkservice(node) == NULL)
    297                         {
    298                                 node = service;
    299                                 continue;
    300                         }
    301301                        if(ret != 0) // socket not connected
    302302                        {
    303303                                debug(250, "socket not connected, try connect");
    304                                 ret = sockopen(&node->camsockfd, "/tmp/camd.socket", 1, -1);
    305                                 if(ret == 0)
    306                                         sendcapmt(node, 1);
     304                                sendcapmt(node, 1);
    307305                        }
    308306                }
  • titan/titan/header.h

    r10859 r10896  
    321321
    322322//service.h
     323struct service* checkdoubleservice(struct service* node);
    323324struct service* getservicebychannel(struct channel* chnode);
    324325struct service* checkservice(struct service* node);
  • titan/titan/service.h

    r10865 r10896  
    499499}
    500500
     501struct service* checkdoubleservice(struct service* node)
     502{
     503        struct service* snode = service;
     504
     505        while(snode != NULL)
     506        {
     507                if(snode != status.lastservice && snode != node && snode->channel == node->channel)
     508                        return snode;
     509                snode = snode->next;
     510
     511        }
     512        return NULL;
     513}
     514
     515//flag2: timeshift/player
     516void camsockclose(struct service* node, int flag)
     517{
     518        struct service* snode = NULL;
     519
     520        if(flag == 2) return;
     521       
     522        snode = checkdoubleservice(node);
     523        if(snode == NULL)
     524                sockclose(&node->camsockfd);
     525        else
     526        {
     527                if(snode->camsockfd > -1) sockclose(&node->camsockfd);
     528                snode->camsockfd = node->camsockfd;
     529                if(snode != node) node->camsockfd = -1;
     530        }
     531}
     532
    501533//flag 0: with mutex
    502534//flag 1: without mutex
     
    551583                audiostop(node->audiodev);
    552584                videostop(node->videodev, clear);
    553                 sockclose(&node->camsockfd);
     585
     586                camsockclose(node, flag);
     587               
    554588                if(flag == 1 || (flag == 0 && getconfigint("fastzap", NULL) == 0))
    555589                {
     
    677711                        close(node->recdstfd);
    678712                        close(node->recsrcfd);
    679                         sockclose(&node->camsockfd);
     713                        camsockclose(node, 0);
    680714
    681715                        //check if a rectimer is joined with a service
     
    766800                if(tmpstr != NULL)
    767801                textbox(_("Message"), _(tmpstr), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, timeout, 0);
    768         }
     802                }
    769803        if(flag != 1)
    770804        {
  • titan/titan/struct.h

    r10876 r10896  
    182182        int connid;
    183183        int poll;
    184         int capmtsend;
    185184        int status;
    186185        int rlen;
     
    188187        char* name;
    189188        int fastrun;
     189        int mmimanager;
    190190        int mmiopen;
    191         int mmimanager;
    192191        int camanager;
    193192        int datetimemanager;
     
    736735        int recsrcfd;
    737736        int camsockfd;
     737        //ca is send to module
     738        int capmtsend;
    738739        time_t recendtime;
    739740        size_t reclastsync;
  • titan/titan/titan.c

    r10849 r10896  
    524524        }
    525525
    526         addtimer(&checkdate, START, 1000, -1, NULL, NULL, NULL);
     526        addtimer(&checkdate, START, 2000, -1, NULL, NULL, NULL);
    527527        addtimer(&updatevfd, START, 1000, -1, NULL, NULL, NULL);
    528528
     
    559559       
    560560        //start spinner thread
    561         addtimer(&checkspinner, START, 1000, -1, NULL, NULL, NULL);
     561        addtimer(&checkspinner, START, 2000, -1, NULL, NULL, NULL);
    562562        //start auto shutdown thread
    563         addtimer(&checkshutdowntimer, START, 1000, -1, NULL, NULL, NULL);
     563        addtimer(&checkshutdowntimer, START, 2000, -1, NULL, NULL, NULL);
    564564
    565565        //check servicestart
     
    580580        addtimer(&checkrectimer, START, 10000, -1, NULL, NULL, NULL);
    581581        //check if cam socket connected
    582         addtimer(&checkcam, START, 1000, -1, NULL, NULL, NULL);
     582        addtimer(&checkcam, START, 3000, -1, NULL, NULL, NULL);
    583583        //start stream server
    584584        addtimer(&streamthreadfunc, START, 10000, -1, NULL, NULL, NULL);
     
    586586        status.epgscanlistthread = addtimer(&epgscanlistthread, START, 1000, 1, NULL, NULL, NULL);
    587587        //get pmt
    588         addtimer(&dvbgetpmtthread, START, 1000, -1, NULL, NULL, NULL);
     588        addtimer(&dvbgetpmtthread, START, 2000, -1, NULL, NULL, NULL);
    589589        //check hdd (in the moment not needed, but can aktivated when needed)
    590590        //addtimer(&addhddall, START, 3000, -1, NULL, NULL, NULL);
Note: See TracChangeset for help on using the changeset viewer.