+ {
+ eit_t *eit = (eit_t*) data;
+ __u32 sectionNo = data[0] << 24;
+ sectionNo |= data[3] << 16;
+ sectionNo |= data[4] << 8;
+ sectionNo |= eit->section_number;
+
+ tidMap::iterator it =
+ seenSections.find(sectionNo);
+
+ if ( it == seenSections.end() )
+ {
+ seenSections.insert(sectionNo);
+ __u32 tmpval = sectionNo & 0xFFFFFF00;
+ __u8 incr = source == NOWNEXT ? 1 : 8;
+ for ( int i = 0; i <= eit->last_section_number; i+=incr )
+ {
+ if ( i == eit->section_number )
+ {
+ for (int x=i; x <= eit->segment_last_section_number; ++x)
+ calcedSections.insert(tmpval|(x&0xFF));
+ }
+ else
+ calcedSections.insert(tmpval|(i&0xFF));
+ }
+ cache->sectionRead(data, source, this);
+ }
+ }