Retrieving long channel names from service details
While retrieving the long channel name from the service details, we are getting empty string in RI 1.1.4 code and actual source name in RI 1.2.1 code.
In the native cache element (mpe_SiTableEntry), there are two structures present : source_names and source_long_names. The operations in populating the cache elements and retrieving are as follows in 1.1.4 and 1.2.1
RI 1.1.4 Implementation:
While parsing the SNS Subtable, we are using the method - mpe_siSetSourceLongNameForSourceId () for populating the long channel name, but it populates the structure- source_names instead of source_long_names.
While retrieving the long channel names (using methods in mpe/mgr/simgr/simgr.c- mpe_siGetNumberOfLongNamesForServiceHandle and mpe_siGetLongNamesForServiceHandle ) the iteration is done on source_long_names structure (which is not the populated one) and hence we are getting empty string as long source name.
RI 1.2.1 Implementation:
While parsing the SNS Subtable, both the source_names and source_long_names are populated with same name.
While retrieving the long channel names (using methods- mpe_siGetNumberOfLongNamesForServiceHandle and mpe_siGetLongNamesForServiceHandle) , source_names structure is being used for iteration and hence we are getting the actual source name from the service details object.
Please share your thoughts on the following queries:
1. In RI 1.2.1 code, why are we iterating on source_names structure when asked to get the long names in mpe_siGetNumberOfLongNamesForServiceHandle and mpe_siGetLongNamesForServiceHandle ? As per the current code, the source_long_names structure is redundant, right?
2. In RI 1.1.4 code, we have an obvious bug in retireving the long channel names - population is done in one structure and retrieval from another structure, right?