diff --git a/src/lua/bsdsocket.lua b/src/lua/bsdsocket.lua
index b0b758c17f7a7d18a90af2b1bfbc82af02f5739a..723383c98b8741f9662d99efafa5b47dddce7e0f 100644
--- a/src/lua/bsdsocket.lua
+++ b/src/lua/bsdsocket.lua
@@ -925,6 +925,7 @@ end
 socket_mt = {
         __index     = socket_methods,
         __tostring  = function(self)
+            local save_errno = self._errno
             local name = sprintf("fd %d", self.fh)
             local aka = self:name()
             if aka ~= nil then
@@ -934,6 +935,7 @@ socket_mt = {
             if peer ~= nil then
                 name = sprintf("%s, peer %s:%s", name, peer.host, peer.port)
             end
+            self._errno = save_errno
             return name
         end
 }