From 2b6e91c2ee4f89c0ee31c83c3a5e5414fd2b3d40 Mon Sep 17 00:00:00 2001
From: Nick Mathewson <nickm@torproject.org>
Date: Wed, 16 May 2012 12:31:45 -0400
Subject: [PATCH] Report EADDRNOTAVAIL and EADDRINUSE as RESOURCELIMIT

These errors usually mean address exhaustion; reporting them as such
lets clients adjust their load to try other exits.

Fix for bug 4710; bugfix on 0.1.0.1-rc, which started using
END_STREAM_REASON_RESOURCELIMIT.
---
 changes/bug4710  | 5 +++++
 src/or/reasons.c | 2 ++
 2 files changed, 7 insertions(+)
 create mode 100644 changes/bug4710

diff --git a/changes/bug4710 b/changes/bug4710
new file mode 100644
index 0000000000..7f94b4d20d
--- /dev/null
+++ b/changes/bug4710
@@ -0,0 +1,5 @@
+  o Minor bugfixes:
+    - Exit nodes now correcly report EADDRINUSE and EADDRNOTAVAIL as
+      resource exhaustion, so that clients can adjust their load to
+      try other exits. Fix for bug 4710; bugfix on 0.1.0.1-rc, which
+      started using END_STREAM_REASON_RESOURCELIMIT.
diff --git a/src/or/reasons.c b/src/or/reasons.c
index 319e6c055a..67abc350d1 100644
--- a/src/or/reasons.c
+++ b/src/or/reasons.c
@@ -184,6 +184,8 @@ errno_to_stream_end_reason(int e)
     S_CASE(ENOBUFS):
     case ENOMEM:
     case ENFILE:
+    S_CASE(EADDRINUSE):
+    S_CASE(EADDRNOTAVAIL):
     E_CASE(EMFILE):
       return END_STREAM_REASON_RESOURCELIMIT;
     default:
-- 
GitLab