<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SukmoonLee Blog &#187; smlee</title>
	<atom:link href="http://blog.sukmoonlee.com/wordpress/archives/category/smlee/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.sukmoonlee.com/wordpress</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Thu, 20 Sep 2012 00:01:14 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Clipboard 복사하기 &#8211; ZeroClipboard</title>
		<link>http://blog.sukmoonlee.com/wordpress/archives/208</link>
		<comments>http://blog.sukmoonlee.com/wordpress/archives/208#comments</comments>
		<pubDate>Tue, 28 Aug 2012 12:47:39 +0000</pubDate>
		<dc:creator>Sukmoon Lee</dc:creator>
				<category><![CDATA[smlee]]></category>
		<category><![CDATA[clipboard]]></category>
		<category><![CDATA[clipboardData]]></category>
		<category><![CDATA[zeroclipboard]]></category>

		<guid isPermaLink="false">http://blog.sukmoonlee.com/wordpress/?p=208</guid>
		<description><![CDATA[웹페이지에서 특정 소스를 클립보드에 복사를 해주는 경우가 있다. 해당 페이지를 사용하는 사용자 입장에서는 편리한 기능이지만, 이를 구현하는 방법은 쉽지가 않다. IE만 지원을 한다면 window.clipboardData Object를 이용해서 간단하게 구현이 가능하다. 대부분 국내 소스들도 해당 스크립트를 이용해서 처리를 하고 있지만, Internet Explorer에서만 제한적으로 사용이 가능하다. 다른 브라우저에서도 지원이 되고, 다른 운영체제(리눅스, OsX, &#8230;)에도 지원이 되는 클립보드를 구현하기 <a href='http://blog.sukmoonlee.com/wordpress/archives/208' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>웹페이지에서 특정 소스를 클립보드에 복사를 해주는 경우가 있다.<br />
해당 페이지를 사용하는 사용자 입장에서는 편리한 기능이지만, 이를 구현하는 방법은 쉽지가 않다. IE만 지원을 한다면 window.clipboardData Object를 이용해서 간단하게 구현이 가능하다. 대부분 국내 소스들도 해당 스크립트를 이용해서 처리를 하고 있지만, Internet Explorer에서만 제한적으로 사용이 가능하다.</p>
<p>다른 브라우저에서도 지원이 되고, 다른 운영체제(리눅스, OsX, &#8230;)에도 지원이 되는 클립보드를 구현하기 위해서 찾은 zeroclipboard 오픈소스를 소개합니다.<br />
대부분 다른 클립보드 지원 소스가 비슷한 원리를 사용하고 있는데, 플래시(Adobe Flash)를 이용하여 클라이언트로 데이타를 전달하는 방식을 사용하고 있다. 여러 오픈 소스를 확인하다 보니, Flash Player 10에서는 지원이 되지 않는 것이 있어서 확인을 해봐야 한다.</p>
<p>아래는 ZeroClipboard 사용방법이다. JavaScript 파일을 추가한 다음에 복사할 문자열을 지정을 하고, 해당 동작을 원하는 HTML에 붙이기만 하면 된다. DOM의 id 값으로 지정을 하기만 하면 동작하게 된다.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="html4strict" style="font-family:monospace;">        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span> 
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span> 
                <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ZeroClipboard.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span> 
&nbsp;
                <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;d_clip_button&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;border:1px solid black; padding:20px;&quot;</span>&gt;</span>Copy To Clipboard<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span> 
&nbsp;
                <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">language</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;JavaScript&quot;</span>&gt;</span> 
                        var clip = new ZeroClipboard.Client(); 
                        clip.setText( 'Copy me!' ); 
                        clip.glue( 'd_clip_button' ); 
                <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span> 
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span> 
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></td></tr></table></div>

<p>참고 URL : <a href="http://code.google.com/p/zeroclipboard/">http://code.google.com/p/zeroclipboard/</a><br />
테스트 페이지 : <a href="http://bowser.effectgames.com/~jhuckaby/zeroclipboard/">http://bowser.effectgames.com/~jhuckaby/zeroclipboard/</a><br />
메뉴얼(WIKI) : <a href="http://code.google.com/p/zeroclipboard/wiki/Instructions">http://code.google.com/p/zeroclipboard/wiki/Instructions</a></p>
<div class="printfriendly pf-alignleft"><a href="http://blog.sukmoonlee.com/wordpress/archives/208?pfstyle=wp" rel="nofollow" ><img src="http://cdn.printfriendly.com/pf-button-both.gif" alt="Print Friendly" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.sukmoonlee.com/wordpress/archives/208/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Operational Notification &#8212; Segmentation Fault in resolver.c Affects BIND 9.6-ESV-R6, 9.7.5, 9.8.2, &amp; 9.9.0</title>
		<link>http://blog.sukmoonlee.com/wordpress/archives/185</link>
		<comments>http://blog.sukmoonlee.com/wordpress/archives/185#comments</comments>
		<pubDate>Tue, 01 May 2012 00:30:16 +0000</pubDate>
		<dc:creator>Sukmoon Lee</dc:creator>
				<category><![CDATA[smlee]]></category>
		<category><![CDATA[isc.bind]]></category>

		<guid isPermaLink="false">http://blog.sukmoonlee.com/wordpress/?p=185</guid>
		<description><![CDATA[ISC에서 2012년 4월 초에 릴리즈된 버전에 문제가 있다라고 합니다. 5월 중순에 문제를 해결한 버전을 다시 릴리즈를 한다라고 합니다. https://lists.isc.org/pipermail/bind-announce/2012-April/000772.html 관심이 있는 분야라서 소스를 확인해봤습니다. 패치가 나오면 제가 예상 했던 부분과 비교를 해봐야 할것 같네요. &#160; &#91;stone@localhost ~&#93;$ diff -Nur bind-9.7.4-P1/lib/dns/resolver.c bind-9.7.5/lib/dns/resolver.c --- bind-9.7.4-P1/lib/dns/resolver.c 2011-06-09 08:15:43.000000000 +0900 +++ bind-9.7.5/lib/dns/resolver.c 2012-03-23 04:14:04.000000000 +0900 @@ -1,5 +1,5 @@ <a href='http://blog.sukmoonlee.com/wordpress/archives/185' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>ISC에서 2012년 4월 초에 릴리즈된 버전에 문제가 있다라고 합니다. 5월 중순에 문제를 해결한 버전을 다시 릴리즈를 한다라고 합니다.</p>
<blockquote><p><a href="https://lists.isc.org/pipermail/bind-announce/2012-April/000772.html">https://lists.isc.org/pipermail/bind-announce/2012-April/000772.html</a></p></blockquote>
<p>관심이 있는 분야라서 소스를 확인해봤습니다. 패치가 나오면 제가 예상 했던 부분과 비교를 해봐야 할것 같네요.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="diff" style="font-family:monospace;">&nbsp;
<span style="">&#91;</span>stone@localhost ~<span style="">&#93;</span>$ diff -Nur bind-9.7.4-P1/lib/dns/resolver.c bind-9.7.5/lib/dns/resolver.c  
<span style="color: #888822;">--- bind-9.7.4-P1/lib/dns/resolver.c    2011-06-09 08:15:43.000000000 +0900</span>
<span style="color: #888822;">+++ bind-9.7.5/lib/dns/resolver.c       2012-03-23 04:14:04.000000000 +0900</span>
<span style="color: #440088;">@@ -1,5 +1,5 @@</span>
 /*
<span style="color: #991111;">- * Copyright <span style="">&#40;</span>C<span style="">&#41;</span> 2004-2011  Internet Systems Consortium, Inc. <span style="">&#40;</span>&quot;ISC&quot;<span style="">&#41;</span></span>
<span style="color: #00b000;">+ * Copyright <span style="">&#40;</span>C<span style="">&#41;</span> 2004-2012  Internet Systems Consortium, Inc. <span style="">&#40;</span>&quot;ISC&quot;<span style="">&#41;</span></span>
  * Copyright <span style="">&#40;</span>C<span style="">&#41;</span> <span style="">1999</span>-<span style="">2003</span>  Internet Software Consortium.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
<span style="color: #440088;">@@ -15,7 +15,7 @@</span>
  * PERFORMANCE OF THIS SOFTWARE.
  */
&nbsp;
<span style="color: #991111;">-/* $Id: resolver.c,v 1.413.14.17 2011-06-08 23:15:43 each Exp $ */</span>
<span style="color: #00b000;">+/* $Id$ */</span>
&nbsp;
 /*! \file */
&nbsp;
<span style="color: #440088;">@@ -208,6 +208,8 @@</span>
        ISC_LIST<span style="">&#40;</span>dns_validator_t<span style="">&#41;</span>       validators;
        dns_db_t *                      cache;
        dns_adb_t *                     adb;
<span style="color: #00b000;">+       isc_boolean_t                   ns_ttl_ok;</span>
<span style="color: #00b000;">+       isc_uint32_t                    ns_ttl;</span>
&nbsp;
        /*%
         * The number of events we're waiting for.
<span style="color: #440088;">@@ -444,7 +446,7 @@</span>
                                      dns_rdataset_t *ardataset,
                                      isc_result_t *eresultp<span style="">&#41;</span>;
 static void validated<span style="">&#40;</span>isc_task_t *task, isc_event_t *event<span style="">&#41;</span>;
<span style="color: #991111;">-static void maybe_destroy<span style="">&#40;</span>fetchctx_t *fctx<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+static isc_boolean_t maybe_destroy<span style="">&#40;</span>fetchctx_t *fctx, isc_boolean_t locked<span style="">&#41;</span>;</span>
 static void add_bad<span style="">&#40;</span>fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo,
                    isc_result_t reason, badnstype_t badtype<span style="">&#41;</span>;
&nbsp;
<span style="color: #440088;">@@ -737,8 +739,11 @@</span>
        INSIST<span style="">&#40;</span>query-&gt;tcpsocket == NULL<span style="">&#41;</span>;
&nbsp;
        query-&gt;fctx-&gt;nqueries--;
<span style="color: #991111;">-       if <span style="">&#40;</span>SHUTTINGDOWN<span style="">&#40;</span>query-&gt;fctx<span style="">&#41;</span><span style="">&#41;</span></span>
<span style="color: #991111;">-               maybe_destroy<span style="">&#40;</span>query-&gt;fctx<span style="">&#41;</span>;     /* Locks bucket. */</span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>SHUTTINGDOWN<span style="">&#40;</span>query-&gt;fctx<span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+               dns_resolver_t *res = query-&gt;fctx-&gt;res;</span>
<span style="color: #00b000;">+               if <span style="">&#40;</span>maybe_destroy<span style="">&#40;</span>query-&gt;fctx, ISC_FALSE<span style="">&#41;</span><span style="">&#41;</span></span>
<span style="color: #00b000;">+                       empty_bucket<span style="">&#40;</span>res<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       <span style="">&#125;</span></span>
        query-&gt;magic = <span style="">0</span>;
        isc_mem_put<span style="">&#40;</span>query-&gt;mctx, query, sizeof<span style="">&#40;</span>*query<span style="">&#41;</span><span style="">&#41;</span>;
        *queryp = NULL;
<span style="color: #440088;">@@ -1553,9 +1558,11 @@</span>
                dns_dispatch_detach<span style="">&#40;</span>&amp;query-&gt;dispatch<span style="">&#41;</span>;
&nbsp;
  cleanup_query:
<span style="color: #991111;">-       query-&gt;magic = <span style="">0</span>;</span>
<span style="color: #991111;">-       isc_mem_put<span style="">&#40;</span>res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.mctx,</span>
<span style="color: #991111;">-                   query, sizeof<span style="">&#40;</span>*query<span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>query-&gt;connects == 0<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+               query-&gt;magic = <span style="">0</span>;</span>
<span style="color: #00b000;">+               isc_mem_put<span style="">&#40;</span>res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.mctx,</span>
<span style="color: #00b000;">+                           query, sizeof<span style="">&#40;</span>*query<span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       <span style="">&#125;</span></span>
&nbsp;
  stop_idle_timer:
        RUNTIME_CHECK<span style="">&#40;</span>fctx_stopidletimer<span style="">&#40;</span>fctx<span style="">&#41;</span> == ISC_R_SUCCESS<span style="">&#41;</span>;
<span style="color: #440088;">@@ -1673,6 +1680,7 @@</span>
        dns_compress_t cctx;
        isc_boolean_t cleanup_cctx = ISC_FALSE;
        isc_boolean_t secure_domain;
<span style="color: #00b000;">+       isc_boolean_t connecting = ISC_FALSE;</span>
&nbsp;
        fctx = query-&gt;fctx;
        QTRACE<span style="">&#40;</span>&quot;send&quot;<span style="">&#41;</span>;
<span style="color: #440088;">@@ -1963,6 +1971,7 @@</span>
                                                    query<span style="">&#41;</span>;
                        if <span style="">&#40;</span>result != ISC_R_SUCCESS<span style="">&#41;</span>
                                goto cleanup_message;
<span style="color: #00b000;">+                       connecting = ISC_TRUE;</span>
                        query-&gt;connects++;
                <span style="">&#125;</span>
        <span style="">&#125;</span>
<span style="color: #440088;">@@ -1974,8 +1983,19 @@</span>
         */
        result = isc_socket_sendto<span style="">&#40;</span>socket, &amp;r, task, resquery_senddone,
                                   query, address, NULL<span style="">&#41;</span>;
<span style="color: #991111;">-       if <span style="">&#40;</span>result != ISC_R_SUCCESS<span style="">&#41;</span></span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>result != ISC_R_SUCCESS<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+               if <span style="">&#40;</span>connecting<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+                       /*</span>
<span style="color: #00b000;">+                        * This query is still connecting.</span>
<span style="color: #00b000;">+                        * Mark it as canceled so that it will just be</span>
<span style="color: #00b000;">+                        * cleaned up when the connected event is received.</span>
<span style="color: #00b000;">+                        * Keep fctx around until the event is processed.</span>
<span style="color: #00b000;">+                        */</span>
<span style="color: #00b000;">+                       query-&gt;fctx-&gt;nqueries++;</span>
<span style="color: #00b000;">+                       query-&gt;attributes |= RESQUERY_ATTR_CANCELED;</span>
<span style="color: #00b000;">+               <span style="">&#125;</span></span>
                goto cleanup_message;
<span style="color: #00b000;">+       <span style="">&#125;</span></span>
&nbsp;
        query-&gt;sends++;
&nbsp;
<span style="color: #440088;">@@ -2137,6 +2157,7 @@</span>
        isc_boolean_t want_try = ISC_FALSE;
        isc_boolean_t want_done = ISC_FALSE;
        isc_boolean_t bucket_empty = ISC_FALSE;
<span style="color: #00b000;">+       isc_boolean_t destroy = ISC_FALSE;</span>
        unsigned int bucketnum;
&nbsp;
        find = event-&gt;ev_sender;
<span style="color: #440088;">@@ -2148,6 +2169,9 @@</span>
&nbsp;
        FCTXTRACE<span style="">&#40;</span>&quot;finddone&quot;<span style="">&#41;</span>;
&nbsp;
<span style="color: #00b000;">+       bucketnum = fctx-&gt;bucketnum;</span>
<span style="color: #00b000;">+       LOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
        INSIST<span style="">&#40;</span>fctx-&gt;pending &gt; <span style="">0</span><span style="">&#41;</span>;
        fctx-&gt;pending--;
&nbsp;
<span style="color: #440088;">@@ -2172,17 +2196,17 @@</span>
                <span style="">&#125;</span>
        <span style="">&#125;</span> else if <span style="">&#40;</span>SHUTTINGDOWN<span style="">&#40;</span>fctx<span style="">&#41;</span> &amp;&amp; fctx-&gt;pending == <span style="">0</span> &amp;&amp;
                   fctx-&gt;nqueries == <span style="">0</span> &amp;&amp; ISC_LIST_EMPTY<span style="">&#40;</span>fctx-&gt;validators<span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #991111;">-               bucketnum = fctx-&gt;bucketnum;</span>
<span style="color: #991111;">-               LOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
                /*
                 * Note that we had to wait until we had the lock before
                 * looking at fctx-&gt;references.
                 */
                if <span style="">&#40;</span>fctx-&gt;references == <span style="">0</span><span style="">&#41;</span>
<span style="color: #991111;">-                       bucket_empty = fctx_destroy<span style="">&#40;</span>fctx<span style="">&#41;</span>;</span>
<span style="color: #991111;">-               UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+                       destroy = ISC_TRUE;</span>
        <span style="">&#125;</span>
<span style="color: #00b000;">+       UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
&nbsp;
<span style="color: #00b000;">+       if <span style="">&#40;</span>destroy<span style="">&#41;</span></span>
<span style="color: #00b000;">+               bucket_empty = fctx_destroy<span style="">&#40;</span>fctx<span style="">&#41;</span>;</span>
        isc_event_free<span style="">&#40;</span>&amp;event<span style="">&#41;</span>;
        dns_adb_destroyfind<span style="">&#40;</span>&amp;find<span style="">&#41;</span>;
&nbsp;
<span style="color: #440088;">@@ -3476,6 +3500,20 @@</span>
        return <span style="">&#40;</span>ISC_R_SUCCESS<span style="">&#41;</span>;
 <span style="">&#125;</span>
&nbsp;
<span style="color: #00b000;">+static inline void</span>
<span style="color: #00b000;">+log_ns_ttl<span style="">&#40;</span>fetchctx_t *fctx, const char *where<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+       char namebuf<span style="">&#91;</span>DNS_NAME_FORMATSIZE<span style="">&#93;</span>;</span>
<span style="color: #00b000;">+       char domainbuf<span style="">&#91;</span>DNS_NAME_FORMATSIZE<span style="">&#93;</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+       dns_name_format<span style="">&#40;</span>&amp;fctx-&gt;name, namebuf, sizeof<span style="">&#40;</span>namebuf<span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       dns_name_format<span style="">&#40;</span>&amp;fctx-&gt;domain, domainbuf, sizeof<span style="">&#40;</span>domainbuf<span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       isc_log_write<span style="">&#40;</span>dns_lctx, DNS_LOGCATEGORY_RESOLVER,</span>
<span style="color: #00b000;">+                     DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG<span style="">&#40;</span>10<span style="">&#41;</span>,</span>
<span style="color: #00b000;">+                     &quot;log_ns_ttl: fctx %p: %s: %s <span style="">&#40;</span>in '%s'?<span style="">&#41;</span>: %u %u&quot;,</span>
<span style="color: #00b000;">+                     fctx, where, namebuf, domainbuf,</span>
<span style="color: #00b000;">+                     fctx-&gt;ns_ttl_ok, fctx-&gt;ns_ttl<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+<span style="">&#125;</span></span>
<span style="color: #00b000;">+</span>
 static isc_result_t
 fctx_create<span style="">&#40;</span>dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
            dns_name_t *domain, dns_rdataset_t *nameservers,
<span style="color: #440088;">@@ -3569,6 +3607,8 @@</span>
        fctx-&gt;timeout = ISC_FALSE;
        fctx-&gt;addrinfo = NULL;
        fctx-&gt;client = NULL;
<span style="color: #00b000;">+       fctx-&gt;ns_ttl = <span style="">0</span>;</span>
<span style="color: #00b000;">+       fctx-&gt;ns_ttl_ok = ISC_FALSE;</span>
&nbsp;
        dns_name_init<span style="">&#40;</span>&amp;fctx-&gt;nsname, NULL<span style="">&#41;</span>;
        fctx-&gt;nsfetch = NULL;
<span style="color: #440088;">@@ -3618,6 +3658,8 @@</span>
                                dns_rdataset_disassociate<span style="">&#40;</span>&amp;fctx-&gt;nameservers<span style="">&#41;</span>;
                                goto cleanup_name;
                        <span style="">&#125;</span>
<span style="color: #00b000;">+                       fctx-&gt;ns_ttl = fctx-&gt;nameservers.ttl;</span>
<span style="color: #00b000;">+                       fctx-&gt;ns_ttl_ok = ISC_TRUE;</span>
                <span style="">&#125;</span> else <span style="">&#123;</span>
                        /*
                         * We're in forward-only mode.  Set the query domain.
<span style="color: #440088;">@@ -3635,8 +3677,12 @@</span>
                if <span style="">&#40;</span>result != ISC_R_SUCCESS<span style="">&#41;</span>
                        goto cleanup_name;
                dns_rdataset_clone<span style="">&#40;</span>nameservers, &amp;fctx-&gt;nameservers<span style="">&#41;</span>;
<span style="color: #00b000;">+               fctx-&gt;ns_ttl = fctx-&gt;nameservers.ttl;</span>
<span style="color: #00b000;">+               fctx-&gt;ns_ttl_ok = ISC_TRUE;</span>
        <span style="">&#125;</span>
&nbsp;
<span style="color: #00b000;">+       log_ns_ttl<span style="">&#40;</span>fctx, &quot;fctx_create&quot;<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
        INSIST<span style="">&#40;</span>dns_name_issubdomain<span style="">&#40;</span>&amp;fctx-&gt;name, &amp;fctx-&gt;domain<span style="">&#41;</span><span style="">&#41;</span>;
&nbsp;
        fctx-&gt;qmessage = NULL;
<span style="color: #440088;">@@ -3929,14 +3975,16 @@</span>
&nbsp;
 /*
  * Destroy '*fctx' if it is ready to be destroyed <span style="">&#40;</span>i.e., if it has
<span style="color: #991111;">- * no references and is no longer waiting for any events<span style="">&#41;</span>.  If this</span>
<span style="color: #991111;">- * was the last fctx in the resolver, destroy the resolver.</span>
<span style="color: #00b000;">+ * no references and is no longer waiting for any events<span style="">&#41;</span>.</span>
  *
  * Requires:
  *      '*fctx' is shutting down.
<span style="color: #00b000;">+ *</span>
<span style="color: #00b000;">+ * Returns:</span>
<span style="color: #00b000;">+ *     true if the resolver is exiting and this is the last fctx in the bucket.</span>
  */
<span style="color: #991111;">-static void</span>
<span style="color: #991111;">-maybe_destroy<span style="">&#40;</span>fetchctx_t *fctx<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+static isc_boolean_t</span>
<span style="color: #00b000;">+maybe_destroy<span style="">&#40;</span>fetchctx_t *fctx, isc_boolean_t locked<span style="">&#41;</span> <span style="">&#123;</span></span>
        unsigned int bucketnum;
        isc_boolean_t bucket_empty = ISC_FALSE;
        dns_resolver_t *res = fctx-&gt;res;
<span style="color: #440088;">@@ -3944,8 +3992,11 @@</span>
&nbsp;
        REQUIRE<span style="">&#40;</span>SHUTTINGDOWN<span style="">&#40;</span>fctx<span style="">&#41;</span><span style="">&#41;</span>;
&nbsp;
<span style="color: #00b000;">+       bucketnum = fctx-&gt;bucketnum;</span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>!locked<span style="">&#41;</span></span>
<span style="color: #00b000;">+               LOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
        if <span style="">&#40;</span>fctx-&gt;pending != <span style="">0</span> || fctx-&gt;nqueries != <span style="">0</span><span style="">&#41;</span>
<span style="color: #991111;">-               return;</span>
<span style="color: #00b000;">+               goto unlock;</span>
&nbsp;
        for <span style="">&#40;</span>validator = ISC_LIST_HEAD<span style="">&#40;</span>fctx-&gt;validators<span style="">&#41;</span>;
             validator != NULL; validator = next_validator<span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #440088;">@@ -3953,14 +4004,12 @@</span>
                dns_validator_cancel<span style="">&#40;</span>validator<span style="">&#41;</span>;
        <span style="">&#125;</span>
&nbsp;
<span style="color: #991111;">-       bucketnum = fctx-&gt;bucketnum;</span>
<span style="color: #991111;">-       LOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
        if <span style="">&#40;</span>fctx-&gt;references == <span style="">0</span> &amp;&amp; ISC_LIST_EMPTY<span style="">&#40;</span>fctx-&gt;validators<span style="">&#41;</span><span style="">&#41;</span>
                bucket_empty = fctx_destroy<span style="">&#40;</span>fctx<span style="">&#41;</span>;
<span style="color: #991111;">-       UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-       if <span style="">&#40;</span>bucket_empty<span style="">&#41;</span></span>
<span style="color: #991111;">-               empty_bucket<span style="">&#40;</span>res<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+ unlock:</span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>!locked<span style="">&#41;</span></span>
<span style="color: #00b000;">+               UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       return <span style="">&#40;</span>bucket_empty<span style="">&#41;</span>;</span>
 <span style="">&#125;</span>
&nbsp;
 /*
<span style="color: #440088;">@@ -3968,31 +4017,33 @@</span>
  */
 static void
 validated<span style="">&#40;</span>isc_task_t *task, isc_event_t *event<span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #991111;">-       isc_result_t result = ISC_R_SUCCESS;</span>
<span style="color: #991111;">-       isc_result_t eresult = ISC_R_SUCCESS;</span>
<span style="color: #991111;">-       isc_stdtime_t now;</span>
<span style="color: #991111;">-       fetchctx_t *fctx;</span>
<span style="color: #991111;">-       dns_validatorevent_t *vevent;</span>
<span style="color: #991111;">-       dns_fetchevent_t *hevent;</span>
<span style="color: #991111;">-       dns_rdataset_t *ardataset = NULL;</span>
<span style="color: #991111;">-       dns_rdataset_t *asigrdataset = NULL;</span>
<span style="color: #00b000;">+       dns_adbaddrinfo_t *addrinfo;</span>
        dns_dbnode_t *node = NULL;
<span style="color: #991111;">-       isc_boolean_t negative;</span>
<span style="color: #991111;">-       isc_boolean_t chaining;</span>
<span style="color: #991111;">-       isc_boolean_t sentresponse;</span>
<span style="color: #991111;">-       isc_uint32_t ttl;</span>
        dns_dbnode_t *nsnode = NULL;
<span style="color: #00b000;">+       dns_fetchevent_t *hevent;</span>
        dns_name_t *name;
<span style="color: #00b000;">+       dns_rdataset_t *ardataset = NULL;</span>
<span style="color: #00b000;">+       dns_rdataset_t *asigrdataset = NULL;</span>
        dns_rdataset_t *rdataset;
        dns_rdataset_t *sigrdataset;
<span style="color: #00b000;">+       dns_resolver_t *res;</span>
        dns_valarg_t *valarg;
<span style="color: #991111;">-       dns_adbaddrinfo_t *addrinfo;</span>
<span style="color: #00b000;">+       dns_validatorevent_t *vevent;</span>
<span style="color: #00b000;">+       fetchctx_t *fctx;</span>
<span style="color: #00b000;">+       isc_boolean_t chaining;</span>
<span style="color: #00b000;">+       isc_boolean_t negative;</span>
<span style="color: #00b000;">+       isc_boolean_t sentresponse;</span>
<span style="color: #00b000;">+       isc_result_t eresult = ISC_R_SUCCESS;</span>
<span style="color: #00b000;">+       isc_result_t result = ISC_R_SUCCESS;</span>
<span style="color: #00b000;">+       isc_stdtime_t now;</span>
<span style="color: #00b000;">+       isc_uint32_t ttl;</span>
&nbsp;
        UNUSED<span style="">&#40;</span>task<span style="">&#41;</span>; /* for now */
&nbsp;
        REQUIRE<span style="">&#40;</span>event-&gt;ev_type == DNS_EVENT_VALIDATORDONE<span style="">&#41;</span>;
        valarg = event-&gt;ev_arg;
        fctx = valarg-&gt;fctx;
<span style="color: #00b000;">+       res = fctx-&gt;res;</span>
        addrinfo = valarg-&gt;addrinfo;
        REQUIRE<span style="">&#40;</span>VALID_FCTX<span style="">&#40;</span>fctx<span style="">&#41;</span><span style="">&#41;</span>;
        REQUIRE<span style="">&#40;</span>!ISC_LIST_EMPTY<span style="">&#40;</span>fctx-&gt;validators<span style="">&#41;</span><span style="">&#41;</span>;
<span style="color: #440088;">@@ -4002,6 +4053,8 @@</span>
&nbsp;
        FCTXTRACE<span style="">&#40;</span>&quot;received validation completion event&quot;<span style="">&#41;</span>;
&nbsp;
<span style="color: #00b000;">+       LOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
        ISC_LIST_UNLINK<span style="">&#40;</span>fctx-&gt;validators, vevent-&gt;validator, link<span style="">&#41;</span>;
        fctx-&gt;validator = NULL;
&nbsp;
<span style="color: #440088;">@@ -4010,7 +4063,7 @@</span>
         * destroy the fctx if necessary.
         */
        dns_validator_destroy<span style="">&#40;</span>&amp;vevent-&gt;validator<span style="">&#41;</span>;
<span style="color: #991111;">-       isc_mem_put<span style="">&#40;</span>fctx-&gt;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.mctx,</span>
<span style="color: #00b000;">+       isc_mem_put<span style="">&#40;</span>res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.mctx,</span>
                    valarg, sizeof<span style="">&#40;</span>*valarg<span style="">&#41;</span><span style="">&#41;</span>;
&nbsp;
        negative = ISC_TF<span style="">&#40;</span>vevent-&gt;rdataset == NULL<span style="">&#41;</span>;
<span style="color: #440088;">@@ -4023,12 +4076,15 @@</span>
         * so, destroy the fctx.
         */
        if <span style="">&#40;</span>SHUTTINGDOWN<span style="">&#40;</span>fctx<span style="">&#41;</span> &amp;&amp; !sentresponse<span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #991111;">-               maybe_destroy<span style="">&#40;</span>fctx<span style="">&#41;</span>;    /* Locks bucket. */</span>
<span style="color: #00b000;">+               isc_uint32_t bucketnum = fctx-&gt;bucketnum;</span>
<span style="color: #00b000;">+               isc_boolean_t bucket_empty;</span>
<span style="color: #00b000;">+               bucket_empty = maybe_destroy<span style="">&#40;</span>fctx, ISC_TRUE<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               if <span style="">&#40;</span>bucket_empty<span style="">&#41;</span></span>
<span style="color: #00b000;">+                       empty_bucket<span style="">&#40;</span>res<span style="">&#41;</span>;</span>
                goto cleanup_event;
        <span style="">&#125;</span>
&nbsp;
<span style="color: #991111;">-       LOCK<span style="">&#40;</span>&amp;fctx-&gt;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #991111;">-</span>
        isc_stdtime_get<span style="">&#40;</span>&amp;now<span style="">&#41;</span>;
&nbsp;
        /*
<span style="color: #440088;">@@ -4074,7 +4130,7 @@</span>
&nbsp;
        if <span style="">&#40;</span>vevent-&gt;result != ISC_R_SUCCESS<span style="">&#41;</span> <span style="">&#123;</span>
                FCTXTRACE<span style="">&#40;</span>&quot;validation failed&quot;<span style="">&#41;</span>;
<span style="color: #991111;">-               inc_stats<span style="">&#40;</span>fctx-&gt;res, dns_resstatscounter_valfail<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               inc_stats<span style="">&#40;</span>res, dns_resstatscounter_valfail<span style="">&#41;</span>;</span>
                fctx-&gt;valfail++;
                fctx-&gt;vresult = vevent-&gt;result;
                if <span style="">&#40;</span>fctx-&gt;vresult != DNS_R_BROKENCHAIN<span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #440088;">@@ -4123,7 +4179,7 @@</span>
                result = fctx-&gt;vresult;
                add_bad<span style="">&#40;</span>fctx, addrinfo, result, badns_validation<span style="">&#41;</span>;
                isc_event_free<span style="">&#40;</span>&amp;event<span style="">&#41;</span>;
<span style="color: #991111;">-               UNLOCK<span style="">&#40;</span>&amp;fctx-&gt;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
                INSIST<span style="">&#40;</span>fctx-&gt;validator == NULL<span style="">&#41;</span>;
                fctx-&gt;validator = ISC_LIST_HEAD<span style="">&#40;</span>fctx-&gt;validators<span style="">&#41;</span>;
                if <span style="">&#40;</span>fctx-&gt;validator != NULL<span style="">&#41;</span>
<span style="color: #440088;">@@ -4142,8 +4198,7 @@</span>
                             fctx-&gt;type == dns_rdatatype_dlv ||
                             fctx-&gt;type == dns_rdatatype_ds<span style="">&#41;</span> &amp;&amp;
                             tresult == ISC_R_SUCCESS<span style="">&#41;</span>
<span style="color: #991111;">-                               dns_resolver_addbadcache<span style="">&#40;</span>fctx-&gt;res,</span>
<span style="color: #991111;">-                                                        &amp;fctx-&gt;name,</span>
<span style="color: #00b000;">+                               dns_resolver_addbadcache<span style="">&#40;</span>res, &amp;fctx-&gt;name,</span>
                                                         fctx-&gt;type, &amp;expire<span style="">&#41;</span>;
                        fctx_done<span style="">&#40;</span>fctx, result, __LINE__<span style="">&#41;</span>; /* Locks bucket. */
                <span style="">&#125;</span> else
<span style="color: #440088;">@@ -4156,7 +4211,7 @@</span>
                dns_rdatatype_t covers;
                FCTXTRACE<span style="">&#40;</span>&quot;nonexistence validation OK&quot;<span style="">&#41;</span>;
&nbsp;
<span style="color: #991111;">-               inc_stats<span style="">&#40;</span>fctx-&gt;res, dns_resstatscounter_valnegsuccess<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               inc_stats<span style="">&#40;</span>res, dns_resstatscounter_valnegsuccess<span style="">&#41;</span>;</span>
&nbsp;
                if <span style="">&#40;</span>fctx-&gt;rmessage-&gt;rcode == dns_rcode_nxdomain<span style="">&#41;</span>
                        covers = dns_rdatatype_any;
<span style="color: #440088;">@@ -4173,10 +4228,9 @@</span>
                 * to zero to facilitate locating the containing zone of
                 * a arbitrary zone.
                 */
<span style="color: #991111;">-               ttl = fctx-&gt;res-&gt;view-&gt;maxncachettl;</span>
<span style="color: #00b000;">+               ttl = res-&gt;view-&gt;maxncachettl;</span>
                if <span style="">&#40;</span>fctx-&gt;type == dns_rdatatype_soa &amp;&amp;
<span style="color: #991111;">-                   covers == dns_rdatatype_any &amp;&amp;</span>
<span style="color: #991111;">-                   fctx-&gt;res-&gt;zero_no_soa_ttl<span style="">&#41;</span></span>
<span style="color: #00b000;">+                   covers == dns_rdatatype_any &amp;&amp; res-&gt;zero_no_soa_ttl<span style="">&#41;</span></span>
                        ttl = <span style="">0</span>;
&nbsp;
                result = ncache_adderesult<span style="">&#40;</span>fctx-&gt;rmessage, fctx-&gt;cache, node,
<span style="color: #440088;">@@ -4186,7 +4240,7 @@</span>
                        goto noanswer_response;
                goto answer_response;
        <span style="">&#125;</span> else
<span style="color: #991111;">-               inc_stats<span style="">&#40;</span>fctx-&gt;res, dns_resstatscounter_valsuccess<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               inc_stats<span style="">&#40;</span>res, dns_resstatscounter_valsuccess<span style="">&#41;</span>;</span>
&nbsp;
        FCTXTRACE<span style="">&#40;</span>&quot;validation OK&quot;<span style="">&#41;</span>;
&nbsp;
<span style="color: #440088;">@@ -4234,14 +4288,17 @@</span>
        <span style="">&#125;</span>
&nbsp;
        if <span style="">&#40;</span>sentresponse<span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #00b000;">+               isc_boolean_t bucket_empty = ISC_FALSE;</span>
                /*
                 * If we only deferred the destroy because we wanted to cache
                 * the data, destroy now.
                 */
                dns_db_detachnode<span style="">&#40;</span>fctx-&gt;cache, &amp;node<span style="">&#41;</span>;
<span style="color: #991111;">-               UNLOCK<span style="">&#40;</span>&amp;fctx-&gt;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
                if <span style="">&#40;</span>SHUTTINGDOWN<span style="">&#40;</span>fctx<span style="">&#41;</span><span style="">&#41;</span>
<span style="color: #991111;">-                       maybe_destroy<span style="">&#40;</span>fctx<span style="">&#41;</span>;    /* Locks bucket. */</span>
<span style="color: #00b000;">+                       bucket_empty = maybe_destroy<span style="">&#40;</span>fctx, ISC_TRUE<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               if <span style="">&#40;</span>bucket_empty<span style="">&#41;</span></span>
<span style="color: #00b000;">+                       empty_bucket<span style="">&#40;</span>res<span style="">&#41;</span>;</span>
                goto cleanup_event;
        <span style="">&#125;</span>
&nbsp;
<span style="color: #440088;">@@ -4256,7 +4313,7 @@</span>
                 * be validated.
                 */
                dns_db_detachnode<span style="">&#40;</span>fctx-&gt;cache, &amp;node<span style="">&#41;</span>;
<span style="color: #991111;">-               UNLOCK<span style="">&#40;</span>&amp;fctx-&gt;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
                dns_validator_send<span style="">&#40;</span>ISC_LIST_HEAD<span style="">&#40;</span>fctx-&gt;validators<span style="">&#41;</span><span style="">&#41;</span>;
                goto cleanup_event;
        <span style="">&#125;</span>
<span style="color: #440088;">@@ -4331,8 +4388,7 @@</span>
        if <span style="">&#40;</span>node != NULL<span style="">&#41;</span>
                dns_db_detachnode<span style="">&#40;</span>fctx-&gt;cache, &amp;node<span style="">&#41;</span>;
&nbsp;
<span style="color: #991111;">-       UNLOCK<span style="">&#40;</span>&amp;fctx-&gt;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
<span style="color: #991111;">-</span>
<span style="color: #00b000;">+       UNLOCK<span style="">&#40;</span>&amp;res-&gt;buckets<span style="">&#91;</span>fctx-&gt;bucketnum<span style="">&#93;</span>.lock<span style="">&#41;</span>;</span>
        fctx_done<span style="">&#40;</span>fctx, result, __LINE__<span style="">&#41;</span>; /* Locks bucket. */
&nbsp;
  cleanup_event:
<span style="color: #440088;">@@ -5303,6 +5359,26 @@</span>
        return <span style="">&#40;</span>ISC_TRUE<span style="">&#41;</span>;
 <span style="">&#125;</span>
&nbsp;
<span style="color: #00b000;">+static void</span>
<span style="color: #00b000;">+trim_ns_ttl<span style="">&#40;</span>fetchctx_t *fctx, dns_name_t *name, dns_rdataset_t *rdataset<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+       char ns_namebuf<span style="">&#91;</span>DNS_NAME_FORMATSIZE<span style="">&#93;</span>;</span>
<span style="color: #00b000;">+       char namebuf<span style="">&#91;</span>DNS_NAME_FORMATSIZE<span style="">&#93;</span>;</span>
<span style="color: #00b000;">+       char tbuf<span style="">&#91;</span>DNS_RDATATYPE_FORMATSIZE<span style="">&#93;</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>fctx-&gt;ns_ttl_ok &amp;&amp; rdataset-&gt;ttl &gt; fctx-&gt;ns_ttl<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+               dns_name_format<span style="">&#40;</span>name, ns_namebuf, sizeof<span style="">&#40;</span>ns_namebuf<span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               dns_name_format<span style="">&#40;</span>&amp;fctx-&gt;name, namebuf, sizeof<span style="">&#40;</span>namebuf<span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               dns_rdatatype_format<span style="">&#40;</span>fctx-&gt;type, tbuf, sizeof<span style="">&#40;</span>tbuf<span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+               isc_log_write<span style="">&#40;</span>dns_lctx, DNS_LOGCATEGORY_RESOLVER,</span>
<span style="color: #00b000;">+                             DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG<span style="">&#40;</span>10<span style="">&#41;</span>,</span>
<span style="color: #00b000;">+                             &quot;fctx %p: trimming ttl of %s/NS for %s/%s: &quot;</span>
<span style="color: #00b000;">+                             &quot;%u -&gt; %u&quot;, fctx, ns_namebuf, namebuf, tbuf,</span>
<span style="color: #00b000;">+                             rdataset-&gt;ttl, fctx-&gt;ns_ttl<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+               rdataset-&gt;ttl = fctx-&gt;ns_ttl;</span>
<span style="color: #00b000;">+       <span style="">&#125;</span></span>
<span style="color: #00b000;">+<span style="">&#125;</span></span>
<span style="color: #00b000;">+</span>
 /*
  * Handle a no-answer response <span style="">&#40;</span>NXDOMAIN, NXRRSET, or referral<span style="">&#41;</span>.
  * If look_in_options has LOOK_FOR_NS_IN_ANSWER then we look in the answer
<span style="color: #440088;">@@ -5473,6 +5549,9 @@</span>
                                        if <span style="">&#40;</span>aa<span style="">&#41;</span>
                                                rdataset-&gt;trust =
                                                    dns_trust_authauthority;
<span style="color: #00b000;">+                                       else if <span style="">&#40;</span>ISFORWARDER<span style="">&#40;</span>fctx-&gt;addrinfo<span style="">&#41;</span><span style="">&#41;</span></span>
<span style="color: #00b000;">+                                               rdataset-&gt;trust =</span>
<span style="color: #00b000;">+                                                       dns_trust_answer;</span>
                                        else
                                                rdataset-&gt;trust =
                                                        dns_trust_additional;
<span style="color: #440088;">@@ -5486,6 +5565,12 @@</span>
                        return <span style="">&#40;</span>result<span style="">&#41;</span>;
        <span style="">&#125;</span>
&nbsp;
<span style="color: #00b000;">+       log_ns_ttl<span style="">&#40;</span>fctx, &quot;noanswer_response&quot;<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>ns_rdataset != NULL &amp;&amp; dns_name_equal<span style="">&#40;</span>&amp;fctx-&gt;domain, ns_name<span style="">&#41;</span> &amp;&amp;</span>
<span style="color: #00b000;">+           !dns_name_equal<span style="">&#40;</span>ns_name, dns_rootname<span style="">&#41;</span><span style="">&#41;</span></span>
<span style="color: #00b000;">+               trim_ns_ttl<span style="">&#40;</span>fctx, ns_name, ns_rdataset<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
        /*
         * A negative response has a SOA record <span style="">&#40;</span>Type <span style="">2</span><span style="">&#41;</span>
         * and a optional NS RRset <span style="">&#40;</span>Type <span style="">1</span><span style="">&#41;</span> or it has neither
<span style="color: #440088;">@@ -5526,6 +5611,9 @@</span>
                                        if <span style="">&#40;</span>aa<span style="">&#41;</span>
                                                rdataset-&gt;trust =
                                                    dns_trust_authauthority;
<span style="color: #00b000;">+                                       else if <span style="">&#40;</span>ISFORWARDER<span style="">&#40;</span>fctx-&gt;addrinfo<span style="">&#41;</span><span style="">&#41;</span></span>
<span style="color: #00b000;">+                                               rdataset-&gt;trust =</span>
<span style="color: #00b000;">+                                                       dns_trust_answer;</span>
                                        else
                                                rdataset-&gt;trust =
                                                        dns_trust_additional;
<span style="color: #440088;">@@ -5567,6 +5655,9 @@</span>
                                        if <span style="">&#40;</span>aa<span style="">&#41;</span>
                                                rdataset-&gt;trust =
                                                    dns_trust_authauthority;
<span style="color: #00b000;">+                                       else if <span style="">&#40;</span>ISFORWARDER<span style="">&#40;</span>fctx-&gt;addrinfo<span style="">&#41;</span><span style="">&#41;</span></span>
<span style="color: #00b000;">+                                               rdataset-&gt;trust =</span>
<span style="color: #00b000;">+                                                       dns_trust_answer;</span>
                                        else
                                                rdataset-&gt;trust =
                                                        dns_trust_additional;
<span style="color: #440088;">@@ -5698,6 +5789,8 @@</span>
                if <span style="">&#40;</span>result != ISC_R_SUCCESS<span style="">&#41;</span>
                        return <span style="">&#40;</span>result<span style="">&#41;</span>;
                fctx-&gt;attributes |= FCTX_ATTR_WANTCACHE;
<span style="color: #00b000;">+               fctx-&gt;ns_ttl_ok = ISC_FALSE;</span>
<span style="color: #00b000;">+               log_ns_ttl<span style="">&#40;</span>fctx, &quot;DELEGATION&quot;<span style="">&#41;</span>;</span>
                return <span style="">&#40;</span>DNS_R_DELEGATION<span style="">&#41;</span>;
        <span style="">&#125;</span>
&nbsp;
<span style="color: #440088;">@@ -5718,8 +5811,8 @@</span>
 answer_response<span style="">&#40;</span>fetchctx_t *fctx<span style="">&#41;</span> <span style="">&#123;</span>
        isc_result_t result;
        dns_message_t *message;
<span style="color: #991111;">-       dns_name_t *name, *qname, tname;</span>
<span style="color: #991111;">-       dns_rdataset_t *rdataset;</span>
<span style="color: #00b000;">+       dns_name_t *name, *qname, tname, *ns_name;</span>
<span style="color: #00b000;">+       dns_rdataset_t *rdataset, *ns_rdataset;</span>
        isc_boolean_t done, external, chaining, aa, found, want_chaining;
        isc_boolean_t have_answer, found_cname, found_type, wanted_chaining;
        unsigned int aflag;
<span style="color: #440088;">@@ -6119,6 +6212,8 @@</span>
         * in this section, and we expect that it is not external.
         */
        done = ISC_FALSE;
<span style="color: #00b000;">+       ns_name = NULL;</span>
<span style="color: #00b000;">+       ns_rdataset = NULL;</span>
        result = dns_message_firstname<span style="">&#40;</span>message, DNS_SECTION_AUTHORITY<span style="">&#41;</span>;
        while <span style="">&#40;</span>!done &amp;&amp; result == ISC_R_SUCCESS<span style="">&#41;</span> <span style="">&#123;</span>
                name = NULL;
<span style="color: #440088;">@@ -6146,6 +6241,10 @@</span>
                                                rdataset-&gt;trust =
                                                    dns_trust_additional;
&nbsp;
<span style="color: #00b000;">+                                       if <span style="">&#40;</span>rdataset-&gt;type == dns_rdatatype_ns<span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">+                                               ns_name = name;</span>
<span style="color: #00b000;">+                                               ns_rdataset = rdataset;</span>
<span style="color: #00b000;">+                                       <span style="">&#125;</span></span>
                                        /*
                                         * Mark any additional data related
                                         * to this rdataset.
<span style="color: #440088;">@@ -6163,6 +6262,12 @@</span>
        if <span style="">&#40;</span>result == ISC_R_NOMORE<span style="">&#41;</span>
                result = ISC_R_SUCCESS;
&nbsp;
<span style="color: #00b000;">+       log_ns_ttl<span style="">&#40;</span>fctx, &quot;answer_response&quot;<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+       if <span style="">&#40;</span>ns_rdataset != NULL &amp;&amp; dns_name_equal<span style="">&#40;</span>&amp;fctx-&gt;domain, ns_name<span style="">&#41;</span> &amp;&amp;</span>
<span style="color: #00b000;">+           !dns_name_equal<span style="">&#40;</span>ns_name, dns_rootname<span style="">&#41;</span><span style="">&#41;</span></span>
<span style="color: #00b000;">+               trim_ns_ttl<span style="">&#40;</span>fctx, ns_name, ns_rdataset<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
        return <span style="">&#40;</span>result<span style="">&#41;</span>;
 <span style="">&#125;</span>
&nbsp;
<span style="color: #440088;">@@ -6234,6 +6339,9 @@</span>
                if <span style="">&#40;</span>dns_rdataset_isassociated<span style="">&#40;</span>&amp;fctx-&gt;nameservers<span style="">&#41;</span><span style="">&#41;</span>
                        dns_rdataset_disassociate<span style="">&#40;</span>&amp;fctx-&gt;nameservers<span style="">&#41;</span>;
                dns_rdataset_clone<span style="">&#40;</span>fevent-&gt;rdataset, &amp;fctx-&gt;nameservers<span style="">&#41;</span>;
<span style="color: #00b000;">+               fctx-&gt;ns_ttl = fctx-&gt;nameservers.ttl;</span>
<span style="color: #00b000;">+               fctx-&gt;ns_ttl_ok = ISC_TRUE;</span>
<span style="color: #00b000;">+               log_ns_ttl<span style="">&#40;</span>fctx, &quot;resume_dslookup&quot;<span style="">&#41;</span>;</span>
                dns_name_free<span style="">&#40;</span>&amp;fctx-&gt;domain,
                              fctx-&gt;res-&gt;buckets<span style="">&#91;</span>bucketnum<span style="">&#93;</span>.mctx<span style="">&#41;</span>;
                dns_name_init<span style="">&#40;</span>&amp;fctx-&gt;domain, NULL<span style="">&#41;</span>;
<span style="color: #440088;">@@ -7167,6 +7275,8 @@</span>
                                fctx_done<span style="">&#40;</span>fctx, DNS_R_SERVFAIL, __LINE__<span style="">&#41;</span>;
                                return;
                        <span style="">&#125;</span>
<span style="color: #00b000;">+                       fctx-&gt;ns_ttl = fctx-&gt;nameservers.ttl;</span>
<span style="color: #00b000;">+                       fctx-&gt;ns_ttl_ok = ISC_TRUE;</span>
                        fctx_cancelqueries<span style="">&#40;</span>fctx, ISC_TRUE<span style="">&#41;</span>;
                        fctx_cleanupfinds<span style="">&#40;</span>fctx<span style="">&#41;</span>;
                        fctx_cleanupaltfinds<span style="">&#40;</span>fctx<span style="">&#41;</span>;</pre></td></tr></table></div>

<div class="printfriendly pf-alignleft"><a href="http://blog.sukmoonlee.com/wordpress/archives/185?pfstyle=wp" rel="nofollow" ><img src="http://cdn.printfriendly.com/pf-button-both.gif" alt="Print Friendly" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.sukmoonlee.com/wordpress/archives/185/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://blog.sukmoonlee.com/wordpress/archives/1</link>
		<comments>http://blog.sukmoonlee.com/wordpress/archives/1#comments</comments>
		<pubDate>Tue, 20 Mar 2012 17:38:59 +0000</pubDate>
		<dc:creator>Sukmoon Lee</dc:creator>
				<category><![CDATA[smlee]]></category>

		<guid isPermaLink="false">http://blog.sukmoonlee.com/wordpress/?p=1</guid>
		<description><![CDATA[Welcome to WordPress. This is your first post. Edit or delete it, then start blogging! 또 새로운 블로그를 시작해볼려고 합니다. 익숙하지는 않겠지만, 잡다한 기록을 남겨볼려고 합니다. 설치를 하면 첫번째로 포스팅이 되어 있는 글이 프로그래머한테는 너무나도 익숙한 제목이네요. &#160; &#160;]]></description>
				<content:encoded><![CDATA[<p>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</p>
<p>또 새로운 블로그를 시작해볼려고 합니다. 익숙하지는 않겠지만, 잡다한 기록을 남겨볼려고 합니다.</p>
<p>설치를 하면 첫번째로 포스팅이 되어 있는 글이 프로그래머한테는 너무나도 익숙한 제목이네요.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="printfriendly pf-alignleft"><a href="http://blog.sukmoonlee.com/wordpress/archives/1?pfstyle=wp" rel="nofollow" ><img src="http://cdn.printfriendly.com/pf-button-both.gif" alt="Print Friendly" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.sukmoonlee.com/wordpress/archives/1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
