<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -157,4 +157,6 @@ typedef enum AsyncSocketError AsyncSocketError;
 + (NSData*) LFData;   // 0x0A
 + (NSData*) ZeroData; // 0x00
 
++ (NSString*)posixErrorStringFromErrno:(int)code;
+
 @end</diff>
      <filename>objc/AsyncSocket.h</filename>
    </modified>
    <modified>
      <diff>@@ -1581,4 +1581,15 @@ static void MyCFWriteStreamCallback (CFWriteStreamRef stream, CFStreamEventType
 	CFWriteStreamSetProperty(theWriteStream, kCFStreamPropertySSLSettings, settings);
 }
 
++ (NSString*)posixErrorStringFromErrno:(int)code
+{
+  const char* error = strerror(code);
+  if (error) {
+    return [NSString stringWithCString:error];
+  }
+  else {
+    return nil;
+  }
+}
+
 @end</diff>
      <filename>objc/AsyncSocket.m</filename>
    </modified>
    <modified>
      <diff>@@ -93,7 +93,18 @@ class TcpClient &lt; NSObject
   
   def onSocket_willDisconnectWithError(sock, err)
     return unless check_tag(sock)
-    @delegate.tcpclient_on_error(self, err) if @delegate &amp;&amp; err
+    return unless err
+    
+    str = nil
+    
+    case err.domain.to_s
+    when NSPOSIXErrorDomain.to_s
+      str = AsyncSocket.posixErrorStringFromErrno(err.code)
+    end
+    
+    str = err.localizedDescription.to_s unless str
+    
+    @delegate.tcpclient_on_error(self, str) if @delegate
   end
   
   def onSocketDidDisconnect(sock)</diff>
      <filename>ruby/component/tcpclient.rb</filename>
    </modified>
    <modified>
      <diff>@@ -83,7 +83,7 @@ class DccReceiver
   def tcpclient_on_error(sender, err)
     return if @status == :complete || @status == :error
     @status = :error
-    @error = err.localizedDescription.to_s
+    @error = err
     close
     @delegate.dccreceiver_on_error(self)
   end</diff>
      <filename>ruby/dcc/dccreceiver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1011,7 +1011,7 @@ class IRCUnit &lt; NSObject
   end
   
   def ircsocket_on_error(err)
-    print_error(err.localizedDescription.to_s)
+    print_error(err)
   end
   
   def ResolverOnResolve(addr)</diff>
      <filename>ruby/irc/unit.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>0b8361ab5ecddc7ca9af3eead3903cb7ccdc2902</id>
    </parent>
  </parents>
  <author>
    <name>Satoshi Nakagawa</name>
    <email>psychs@limechat.net</email>
  </author>
  <url>http://github.com/psychs/limechat/commit/888e6a2109180b43c24b4c5724ca942495802223</url>
  <id>888e6a2109180b43c24b4c5724ca942495802223</id>
  <committed-date>2009-03-08T18:46:50-07:00</committed-date>
  <authored-date>2009-03-08T18:46:50-07:00</authored-date>
  <message>improved error messages</message>
  <tree>af0fd6f8d85252e8208cb6bfa1a88e1cd04ef960</tree>
  <committer>
    <name>Satoshi Nakagawa</name>
    <email>psychs@limechat.net</email>
  </committer>
</commit>
