Pārlūkot izejas kodu

2008-09-14 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Added the function to get error message from socket.
	* src/SocketCore.cc
	* src/SocketCore.h
Tatsuhiro Tsujikawa 17 gadi atpakaļ
vecāks
revīzija
8687877139
3 mainītis faili ar 23 papildinājumiem un 0 dzēšanām
  1. 6 0
      ChangeLog
  2. 15 0
      src/SocketCore.cc
  3. 2 0
      src/SocketCore.h

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2008-09-14  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Added the function to get error message from socket.
+	* src/SocketCore.cc
+	* src/SocketCore.h
+
 2008-09-14  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Added convenient method RequestGroupMan::getOrCreateServerStat()

+ 15 - 0
src/SocketCore.cc

@@ -768,4 +768,19 @@ ssize_t SocketCore::readDataFrom(char* data, size_t len,
   return r;
 }
 
+std::string SocketCore::getSocketError() const
+{
+  int error;
+  SOCKOPT_T optlen = sizeof(error);
+  if(getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &optlen) == -1) {
+    throw DlAbortEx(StringFormat("Failed to get socket error: %s",
+				 errorMsg()).str());
+  }
+  if(error != 0) {
+    return strerror(error);
+  } else {
+    return "";
+  }
+}
+
 } // namespace aria2

+ 2 - 0
src/SocketCore.h

@@ -278,6 +278,8 @@ public:
   bool operator<(const SocketCore& s) {
     return sockfd < s.sockfd;
   }
+
+  std::string getSocketError() const;
 };
 
 } // namespace aria2