IceTV can return "No matching service" error when the actual error is timer conflict

Issue #528 resolved
prl created an issue

If a user has, for example, their IceTV My Account>Guide settings for a channel set to "All", but one of the LCNs in the list has an ONID/TSID/SID triple that's not in the T series scan database, then the following can happen if the user sets an IceTV recording that causes a timer conflict:

  • If the non-matching channel is processed before the matching channel with a timer conflict, the timer response (iceTimer[]) is added to the response queue (update_queue) initially with the error message "No matching service". When the matching channel with the timer conflict is processed the error message in the timer response is changed to "Timer conflict: ...", but the timer response is added to the response queue again. When the loop completes and the timer hasn't been sent the timer response is added to the response queue once more, so that the IceTV server is sent a "Timer conflict: ..." message three times. It seems to handle these multiple responses OK, but they shouldn't be there. But in this instance, the user should see an appropriate error message.

  • If the matching channel with the timer conflict is processed before the non-matching channel, the final state of the timer response will be "No matching service", even though a matching service was in fact found (but couldn't be recorded from). The timer response will again have been placed in the response queue three times.

  • In the case where a matching channel is processed after the non-matching channel and the timer can be created, an "Added" timer response is put into the response queue, even though in normal circumstances the response is not put in the queue.

A fix for this bug was requested by Dave at IceTV.

Comments (1)

  1. Peter Urbanec

    Fix Issue #528: IceTV can return "No matching service" error when the actual error is timer conflict

    [EPGFetcher]

    In processTimers(), when not completed and not updated, set the "No matching service" failure response as a sentinal, and update the same response when a channel match is successfully made, or when there is a timer conflict.

    The response is only queued once.

    This avoids having a "No matching service" failure response sent when the error is in fact "Timer conflict: ..." and ensures that only a single response is sent for the timer, whether setting the timer is successful or fails.

    Also add the timer name to the "Failed to update" error response for a timer.

    → <<cset 755c03a04499>>

  2. Log in to comment