@@ -63,29 +63,31 @@ func (c *Client) consumeObject(state *ConsumeState) {
6363 // if metadata fetching is disabled, just attempt to fetch one segment
6464 // with the prefix, then get the versioned name from the segment.
6565 if state .args .NoMetadata {
66- c .fetchDataByPrefix (name , state .args .TryStore , func (data ndn.Data , err error ) {
67- if err != nil {
68- state .finalizeError (err )
69- return
70- }
71- meta , err := extractSegMetadata (data )
66+ c .fetchDataByPrefix (name , state .args .TryStore , state .args .IgnoreValidity .GetOr (false ),
67+ func (data ndn.Data , err error ) {
68+ if err != nil {
69+ state .finalizeError (err )
70+ return
71+ }
72+ meta , err := extractSegMetadata (data )
73+ if err != nil {
74+ state .finalizeError (err )
75+ return
76+ }
77+ c .consumeObjectWithMeta (state , meta )
78+ })
79+ return
80+ }
81+
82+ // fetch RDR metadata for this object
83+ c .fetchMetadata (name , state .args .TryStore , state .args .IgnoreValidity .GetOr (false ),
84+ func (meta * rdr.MetaData , err error ) {
7285 if err != nil {
7386 state .finalizeError (err )
7487 return
7588 }
7689 c .consumeObjectWithMeta (state , meta )
7790 })
78- return
79- }
80-
81- // fetch RDR metadata for this object
82- c .fetchMetadata (name , state .args .TryStore , func (meta * rdr.MetaData , err error ) {
83- if err != nil {
84- state .finalizeError (err )
85- return
86- }
87- c .consumeObjectWithMeta (state , meta )
88- })
8991 return
9092 }
9193
@@ -104,6 +106,7 @@ func (c *Client) consumeObjectWithMeta(state *ConsumeState, meta *rdr.MetaData)
104106func (c * Client ) fetchMetadata (
105107 name enc.Name ,
106108 tryStore bool ,
109+ ignoreValidity bool ,
107110 callback func (meta * rdr.MetaData , err error ),
108111) {
109112 log .Debug (c , "Fetching object metadata" , "name" , name )
@@ -126,25 +129,29 @@ func (c *Client) fetchMetadata(
126129 callback (nil , fmt .Errorf ("%w: fetch metadata failed with result: %s" , ndn .ErrNetwork , args .Result ))
127130 return
128131 }
129-
130- c .Validate (args .Data , args .SigCovered , func (valid bool , err error ) {
131- // validate with trust config
132- if ! valid {
133- callback (nil , fmt .Errorf ("%w: validate metadata failed: %w" , ndn .ErrSecurity , err ))
134- return
135- }
136-
137- // parse metadata
138- metadata , err := rdr .ParseMetaData (enc .NewWireView (args .Data .Content ()), false )
139- if err != nil {
140- callback (nil , fmt .Errorf ("%w: failed to parse object metadata: %w" , ndn .ErrProtocol , err ))
141- return
142- }
143-
144- // clone fields for lifetime
145- metadata .Name = metadata .Name .Clone ()
146- metadata .FinalBlockID = slices .Clone (metadata .FinalBlockID )
147- callback (metadata , nil )
132+ c .ValidateExt (ndn.ValidateExtArgs {
133+ Data : args .Data ,
134+ SigCovered : args .SigCovered ,
135+ IgnoreValidity : optional .Some (ignoreValidity ),
136+ Callback : func (valid bool , err error ) {
137+ // validate with trust config
138+ if ! valid {
139+ callback (nil , fmt .Errorf ("%w: validate metadata failed: %w" , ndn .ErrSecurity , err ))
140+ return
141+ }
142+
143+ // parse metadata
144+ metadata , err := rdr .ParseMetaData (enc .NewWireView (args .Data .Content ()), false )
145+ if err != nil {
146+ callback (nil , fmt .Errorf ("%w: failed to parse object metadata: %w" , ndn .ErrProtocol , err ))
147+ return
148+ }
149+
150+ // clone fields for lifetime
151+ metadata .Name = metadata .Name .Clone ()
152+ metadata .FinalBlockID = slices .Clone (metadata .FinalBlockID )
153+ callback (metadata , nil )
154+ },
148155 })
149156 },
150157 })
@@ -154,6 +161,7 @@ func (c *Client) fetchMetadata(
154161func (c * Client ) fetchDataByPrefix (
155162 name enc.Name ,
156163 tryStore bool ,
164+ ignoreValidity bool ,
157165 callback func (data ndn.Data , err error ),
158166) {
159167 log .Debug (c , "Fetching data with prefix" , "name" , name )
@@ -176,14 +184,18 @@ func (c *Client) fetchDataByPrefix(
176184 callback (nil , fmt .Errorf ("%w: fetch by prefix failed with result: %s" , ndn .ErrNetwork , args .Result ))
177185 return
178186 }
179-
180- c .Validate (args .Data , args .SigCovered , func (valid bool , err error ) {
181- if ! valid {
182- callback (nil , fmt .Errorf ("%w: validate by prefix failed: %w" , ndn .ErrSecurity , err ))
183- return
184- }
185-
186- callback (args .Data , nil )
187+ c .ValidateExt (ndn.ValidateExtArgs {
188+ Data : args .Data ,
189+ SigCovered : args .SigCovered ,
190+ IgnoreValidity : optional .Some (ignoreValidity ),
191+ Callback : func (valid bool , err error ) {
192+ if ! valid {
193+ callback (nil , fmt .Errorf ("%w: validate by prefix failed: %w" , ndn .ErrSecurity , err ))
194+ return
195+ }
196+
197+ callback (args .Data , nil )
198+ },
187199 })
188200 },
189201 })
0 commit comments