@@ -81,7 +81,7 @@ public IDnsQueryResponse Get(string key, out double? effectiveTtl)
8181 else
8282 {
8383 StartCleanup ( ) ;
84- return entry . GetResponse ( ) ;
84+ return entry . Response ;
8585 }
8686 }
8787
@@ -97,7 +97,7 @@ public bool Add(string key, IDnsQueryResponse response)
9797 if ( all . Any ( ) )
9898 {
9999 // in millis
100- double minTtl = all . Min ( p => p . TimeToLive ) * 1000d ;
100+ double minTtl = all . Min ( p => p . InitialTimeToLive ) * 1000d ;
101101
102102 if ( MinimumTimout == Timeout . InfiniteTimeSpan )
103103 {
@@ -171,8 +171,6 @@ private void StartCleanup()
171171
172172 private class ResponseEntry
173173 {
174- private readonly IDnsQueryResponse _response ;
175-
176174 public bool IsExpiredFor ( DateTimeOffset forDate ) => forDate >= ExpiresAt ;
177175
178176 public DateTimeOffset ExpiresAt { get ; }
@@ -181,73 +179,14 @@ private class ResponseEntry
181179
182180 public double TTL { get ; set ; }
183181
184- // returns in seconds, not MS!
185- public int Elapsed ( DateTimeOffset ? since = null )
186- {
187- if ( since == null )
188- {
189- since = DateTimeOffset . UtcNow ;
190- }
191-
192- var elapsedMillis = ( int ) ( since . Value - Created ) . TotalMilliseconds ;
193- if ( elapsedMillis < 0 )
194- {
195- return 0 ;
196- }
197-
198- return elapsedMillis / 1000 ;
199- }
200-
201- public IDnsQueryResponse GetResponse ( )
202- {
203- var elapsed = Elapsed ( ) ;
204- if ( elapsed <= 0 )
205- {
206- return _response ;
207- }
208-
209- var response = new DnsResponseMessage ( _response . Header , _response . MessageSize )
210- {
211- Audit = ( _response as DnsQueryResponse ) ? . Audit ?? new LookupClientAudit ( )
212- } ;
213-
214- foreach ( var record in _response . Questions )
215- {
216- response . AddQuestion ( record ) ;
217- }
218-
219- foreach ( var record in _response . Answers )
220- {
221- var clone = record . Clone ( ) ;
222- clone . TimeToLive = clone . TimeToLive - elapsed ;
223- response . AddAnswer ( clone ) ;
224- }
225-
226- foreach ( var record in _response . Additionals )
227- {
228- var clone = record . Clone ( ) ;
229- clone . TimeToLive = clone . TimeToLive - elapsed ;
230- response . AddAnswer ( clone ) ;
231- }
232-
233- foreach ( var record in _response . Authorities )
234- {
235- var clone = record . Clone ( ) ;
236- clone . TimeToLive = clone . TimeToLive - elapsed ;
237- response . AddAnswer ( clone ) ;
238- }
239-
240- var qr = response . AsQueryResponse ( _response . NameServer ) ;
241-
242- return qr ;
243- }
182+ public IDnsQueryResponse Response { get ; }
244183
245184 public ResponseEntry ( IDnsQueryResponse response , double ttlInMS )
246185 {
247186 Debug . Assert ( response != null ) ;
248187 Debug . Assert ( ttlInMS >= 0 ) ;
249188
250- _response = response ;
189+ Response = response ;
251190 TTL = ttlInMS ;
252191 Created = DateTimeOffset . UtcNow ;
253192 ExpiresAt = Created . AddMilliseconds ( TTL ) ;
0 commit comments