Type URLs can have any host and even include URI scheme #636
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The previous implementation assumed that the
type_url
field in anAny
would always have atype.googleapis.com/
prefix. Though that is typical in practice, it is not actually required per the spec for that field. In fact,protoc
allows the use ofAny
messages (inside message literals for complex option values) that contain a prefix oftype.googleprod.com/
(therefore, so does thebuf
CLI).The way all protobuf runtimes handle
Any
is to instead look at the last path element and ignore the prefix (which is also mentioned in the spec for thetype_url
field). So this makes the code more resilient to unexpected values for type URLs. Previously, theErrorDetail.Type()
method would return the full URL, instead of the type name, in the event that the URL had an unexpected prefix.