On Apr 3, 2011, at 5:52 AM, damker wrote:
> means that it can be a FCS with PI?
No. It means that a message can have an FCS and a PI, but they're separate octets.
According to 3GPP TS 23.040, an SMS-DELIVER-REPORT message has a TP-Failure-Cause (TP-FCS) if it's reporting an error, and always has a TP-Parameter-Indicator (TP-PI).
The check in question is trying to determine whether the octet in question is the TP-FCS from a delivery report from an RP-ERROR or the TP-PI from a delivery report from an RP-ACK. If it's the former, it adds it as a TP-FCS and advances the offset to the next octet, which is the TP-PI, otherwise it doesn't report it at all and leaves the offset alone. The code after that fetches the octet at the offset in question - which is the offset after the TP-FCS if it's determine to be a TP-FCS, and the offset of the field determined *not* to be a TP-FCS otherwise - and adds it as a TP-PI.
So, not a bug.
(Amusingly, a text message was being received, and responded to, in our household at the same time I was looking this up - and, yes, it was over a UMTS network.)