engine: don't panic if TTL <= 0

Fix #933
Merge pull request #935 from bcwaldon/933

Only set up expiration channel if necessary