Look at PRT_HSREND, not PRT_HSDIR, for supports_v3_rendezvous_point
This code seems wrong:
+ rs->supports_v3_rendezvous_point =
+ protocol_list_supports_protocol(tok->args[0], PRT_HSDIR,
+ PROTOVER_HS_RENDEZVOUS_POINT_V3);
It should say "PRT_HSREND", not "PRT_HSDIR".