/* Heuristically dissect a tvbuff containing a JXTA UDP Message */
static gboolean dissect_jxta_UDP_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
/* Heuristically dissect a tvbuff containing a JXTA UDP Message */
static gboolean dissect_jxta_UDP_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
    int save_desegment_offset;
    guint32 save_desegment_len;
    int ret;
    if (tvb_strneql(tvb, 0, JXTA_UDP_SIG, sizeof (JXTA_UDP_SIG)) != 0) {
        return FALSE;
    }
    save_desegment_offset = pinfo->desegment_offset;
    save_desegment_len = pinfo->desegment_len;
    ret = dissect_jxta_udp(tvb, pinfo, tree, NULL);
    if (ret < 0) {
        pinfo->desegment_offset = save_desegment_offset;
        pinfo->desegment_len = save_desegment_len;
        return FALSE;
    } else if (ret == 0) {
        pinfo->desegment_offset = save_desegment_offset;
        pinfo->desegment_len = save_desegment_len;
        return FALSE;
    } else {
        return TRUE;
    }
}