Many thanks for the reply - I have now solved this issue thanks to your suggestions.
The plot thickened with client logging for QuteCom. This occurs every time an INVITE is received
(error) 14:04:04 [PhApi] : osip: /build/qutecom-u8vPAW/qutecom-2.2.1+dfsg1/wifo/libosip2/src/osipparser2/osip_message_parse.c:414: Could not set header: "from" "None
(error) 14:04:04 [PhApi] : osip: /build/qutecom-u8vPAW/qutecom-2.2.1+dfsg1/wifo/libosip2/src/osipparser2/osip_message_parse.c:695: End of header Not found
(error) 14:04:04 [PhApi] : osip: /build/qutecom-u8vPAW/qutecom-2.2.1+dfsg1/wifo/libosip2/src/osipparser2/osip_message_parse.c:932: error in msg_headers_parse()
(error) 14:04:04 [PhApi] : osip: /build/qutecom-u8vPAW/qutecom-2.2.1+dfsg1/wifo/libosip2/src/osip2/osip_event.c:79: could not parse message
(error) 14:04:04 [PhApi] : osip: /build/qutecom-u8vPAW/qutecom-2.2.1+dfsg1/wifo/eXosip/src/udp.c:2569: Could not parse SIP message
Looking at the first few lines of the INVITE, I see this:
where the cidlookup service was a small Python CGI script running on localhost. As it turned out, the output from this service included a line-feed after the caller name, and this was directly fed into the INVITE headers, confusing the SIP client.