]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Revert an erroneous part of the non-fix to bug 326, and add comments to explain why...
authorNick Mathewson <nickm@torproject.org>
Wed, 11 Feb 2009 17:23:11 +0000 (17:23 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 11 Feb 2009 17:23:11 +0000 (17:23 +0000)
svn:r18494

ChangeLog
src/or/eventdns.c

index cb093410dc51d4cebd3a78e5dc82ea6148c50ea0..0acf8bc68a8601f8db256d0d51fe5384059c98db 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,9 @@ Changes in version 0.2.1.13-????? - 2009-0?-??
       logs. Bugfix on 0.2.1.8-alpha.
     - Clients no longer cache certificates for authorities they do not
       recognize.  Bugfix on 0.2.0.9-alpha.
+    - When we can't transmit a DNS request due to a network error, retry
+      it after a while, and eventually transmit a failing response to the
+      RESOLVED cell.  Bugfix on 0.1.2.5-alpha.
 
   o Minor features:
     - On Linux, use the prctl call to re-enable core dumps when the user
index 5638d2d4a69c5f3936783f4991021ff0e26ecb4c..12a291d1b8ab78a24af14bfd1deca43c7c7424dc 100644 (file)
@@ -2046,9 +2046,10 @@ evdns_request_transmit(struct evdns_request *req) {
                nameserver_write_waiting(req->ns, 1);
                return 1;
        case 2:
-               /* failed in some other way */
+               /* failed to transmit the request entirely. */
                retcode = 1;
-               break;
+               /* fall through: we'll set a timeout, which will time out,
+                * and make us retransmit the request anyway. */
        default:
                /* transmitted; we need to check for timeout. */
                log(EVDNS_LOG_DEBUG,
@@ -2060,11 +2061,10 @@ evdns_request_transmit(struct evdns_request *req) {
                                (unsigned long) req);
                        /* ???? Do more? */
                }
+               req->tx_count++;
+               req->transmit_me = 0;
+               return retcode;
        }
-
-       req->tx_count++;
-       req->transmit_me = 0;
-       return retcode;
 }
 
 static void