diff --git a/doc/spec/control-spec.txt b/doc/spec/control-spec.txt
index cf92e2b9e3d53c0e13a47fcf8bfa78a89adfb9ec..948b7ed79530695932dd048003c8f6a8780402ea 100644
--- a/doc/spec/control-spec.txt
+++ b/doc/spec/control-spec.txt
@@ -1029,7 +1029,7 @@ $Id$
 
       Reason = "MISC" / "RESOLVEFAILED" / "CONNECTREFUSED" /
                "EXITPOLICY" / "DESTROY" / "DONE" / "TIMEOUT" /
-               "HIBERNATING" / "INTERNAL"/ "RESOURCELIMIT" /
+               "NOROUTE" / "HIBERNATING" / "INTERNAL"/ "RESOURCELIMIT" /
                "CONNRESET" / "TORPROTOCOL" / "NOTDIRECTORY" / "END"
 
    The "REASON" field is provided only for FAILED, CLOSED, and DETACHED
diff --git a/src/or/relay.c b/src/or/relay.c
index 2082da94fe3702436e371c8217b9e50ac18f8f9c..320c27037b36004232617b16786836297f43714b 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -743,6 +743,7 @@ connection_ap_process_end_not_open(
       case END_STREAM_REASON_RESOLVEFAILED:
       case END_STREAM_REASON_TIMEOUT:
       case END_STREAM_REASON_MISC:
+      case END_STREAM_REASON_NOROUTE:
         if (client_dns_incr_failures(conn->socks_request->address)
             < MAX_RESOLVE_FAILURES) {
           /* We haven't retried too many times; reattach the connection. */