Some minor improvements:
[core.git] / inc / classes / exceptions / socket / class_InvalidSocketException.php
index 27ccb5d537e49dcfac101703420e12cc6961387b..448d2cbd36f2776ac7c5ead11a6a30b05ef840e7 100644 (file)
@@ -26,18 +26,32 @@ class InvalidSocketException extends FrameworkException {
        /**
         * A Constructor for this exception
         *
-        * @param               $messageArray   Error message array
-        * @param               $code                   Error code
+        * @param       $messageArray   Error message array
+        * @param       $code                   Error code
         * @return      void
         */
        public function __construct (array $messageData, $code) {
-               // Construct the message
-               $message = sprintf("[%s:] Invalid socket, type=%s, errno=%s, errstr=%s",
-                       $messageData[0]->__toString(),
-                       $messageData[1],
-                       $messageData[2],
-                       $messageData[3]
-               );
+               // Is it a resource?
+               if (is_resource($message[1])) {
+                       // Get last error
+                       $lastError = socket_last_error($messageData[1]);
+
+                       // Construct the message
+                       $message = sprintf("[%s:] Invalid socket, type=%s, errno=%s, errstr=%s",
+                               $messageData[0]->__toString(),
+                               gettype($messageData[1]),
+                               $lastError,
+                               socket_strerror($lastError)
+                       );
+               } else {
+                       // Construct the message
+                       $message = sprintf("[%s:] Invalid socket, type=%s, errno=%s, errstr=%s",
+                               $messageData[0]->__toString(),
+                               $messageData[1],
+                               $messageData[2],
+                               $messageData[3]
+                       );
+               }
 
                // Call parent exception constructor
                parent::__construct($message, $code);