Changeset 11048
- Timestamp:
- 10/09/15 10:36:21 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/reader-viaccess.c
r11046 r11048 157 157 } 158 158 159 static int8_t find_class(struct s_reader *reader, uint32_t provid, const uchar *b, int32_t l)159 static int8_t add_find_class(struct s_reader *reader, uint32_t provid, const uchar *b, int32_t l, int8_t add) 160 160 { 161 161 int32_t i, j; … … 172 172 uchar cls; 173 173 cls = (l - (j + 1)) * 8 + i; 174 if(cs_add_entitlement(reader, reader->caid, provid, cls, cls, 0, 0, 5, 0) == NULL )174 if(cs_add_entitlement(reader, reader->caid, provid, cls, cls, 0, 0, 5, 0) == NULL && !add) 175 175 { 176 176 rdr_log(reader, "provid %06X class %02X not found!", provid, cls); … … 196 196 end_t = cs_timegm(&tm); 197 197 198 if(cs_add_entitlement(reader, reader->caid, provid, cls, cls, start_t, end_t, 5, 0) != NULL)198 if(cs_add_entitlement(reader, reader->caid, provid, cls, cls, start_t, end_t, 5, add) != NULL) 199 199 { 200 rdr_log(reader, "class %02X provid %06X has already this daterange or newer entitled -> SKIP!", cls, provid); 200 if(!add) 201 { 202 rdr_log(reader, "class %02X provid %06X has already this daterange or newer entitled -> SKIP!", cls, provid); 203 } 201 204 return 0; // skip due to date 202 205 } … … 1620 1623 uchar *nano9EData = 0; 1621 1624 uchar *nanoF0Data = 0; 1625 uchar *nanoA9Data = 0; 1622 1626 1623 1627 for(emmUpToEnd = emmLen; (emmParsed[1] != 0) && (emmUpToEnd > 0); emmUpToEnd -= (2 + emmParsed[1]), emmParsed += (2 + emmParsed[1])) … … 1736 1740 return SKIPPED; 1737 1741 } 1738 if(! find_class(reader, emm_provid, emmParsed + 2, emmParsed[1]))1742 if(!add_find_class(reader, emm_provid, emmParsed + 2, emmParsed[1], 0)) 1739 1743 { 1740 1744 rdr_log(reader, "shared emm provid %06X class mismatch or same enddate -> skipped!", emm_provid); 1741 1745 return SKIPPED; 1742 1746 } 1747 nanoA9Data = emmParsed; 1743 1748 } 1744 1749 … … 1807 1812 if((cta_res[cta_lr - 2] == 0x90 || cta_res[cta_lr - 2] == 0x91) && cta_res[cta_lr - 1] == 0x00) 1808 1813 { 1809 rdr_log(reader, "Your subscription data was updated."); 1810 add_job(reader->client, ACTION_READER_CARDINFO, NULL, 0); 1814 if(nanoA9Data) 1815 { 1816 add_find_class(reader, emm_provid, nanoA9Data + 2, nanoA9Data[1], 1); 1817 rdr_log(reader, "Your subscription data was updated."); 1818 } 1811 1819 rc = 1; // written 1812 1820 }
Note:
See TracChangeset
for help on using the changeset viewer.