Hi All,
Thanks for all the advice, I managed to sort this one (I hope!). For anyone else interested I had to add some code at the start of the routing to look for a SIP UPDATE request. If it was a request then to set the $fs (forced socket) value to equal $Ri (Received interface) value.
Once this was set it now holds the call open for longer than 30 seconds, fingers crossed it's all good!
Thanks again, hope this is of some help to someone else.
Keith