in pkg/filter/http/grpcproxy/grpc.go [313:341]
func RegisterExtension(source DescriptorSource, extReg *dynamic.ExtensionRegistry, msgDesc *desc.MessageDescriptor, registered map[string]bool) error {
msgType := msgDesc.GetFullyQualifiedName()
if _, ok := registered[msgType]; ok {
return nil
}
if len(msgDesc.GetExtensionRanges()) > 0 {
fds, err := source.AllExtensionsForType(msgType)
if err != nil {
return fmt.Errorf("failed to find msg type {%s} in file source", msgType)
}
err = extReg.AddExtension(fds...)
if err != nil {
return fmt.Errorf("failed to register extensions of msgType {%s}, err is {%s}", msgType, err.Error())
}
}
for _, fd := range msgDesc.GetFields() {
if fd.GetMessageType() != nil {
err := RegisterExtension(source, extReg, fd.GetMessageType(), registered)
if err != nil {
return err
}
}
}
return nil
}