Hi again,
I have been reading some source code (UDP), and I have found the following:
1) When the dissection is completed, we call "decode_udp_ports".
2) Within this function, we get a subset of the tvb with next_tvb = tvb_new_subset(tvb, offset, len, reported_len);
3) We provide that subset to the heuristic dissectors registered with call_heur_dissector_direct(udp_p_info->heur_dtbl_entry, next_tvb, pinfo, tree, NULL);
I will assume that this is the way to go and I will implement it like this.
Thanks!
Juanjo Martin