Socket: Fix handle.state() on invalid handles
[senf.git] / Socket / ProtocolClientSocketHandle.cti
index 9f54fe9..1d49c70 100644 (file)
@@ -58,13 +58,13 @@ ProtocolClientSocketHandle(FileHandle other, bool isChecked)
 {}
 
 template <class SocketProtocol>
-prefix_ SocketProtocol const &
+prefix_ SocketProtocol &
 senf::ProtocolClientSocketHandle<SocketProtocol>::protocol()
 {
-    SENF_ASSERT( dynamic_cast<SocketProtocol const *>(&this->body().protocol()) );
+    SENF_ASSERT( dynamic_cast<SocketProtocol *>(&this->body().protocol()) );
     // Need dynamic_cast here, since senf::SocketProtocol is a
     // virtual base
-    return dynamic_cast<SocketProtocol const &>(this->body().protocol());
+    return dynamic_cast<SocketProtocol &>(this->body().protocol());
 }
 
 template <class SocketProtocol>
@@ -91,7 +91,11 @@ senf::ProtocolClientSocketHandle<SocketProtocol>::state(SocketStateMap & map,
                                                                unsigned lod)
 {
     map["handle"] = prettyName(typeid(*this));
-    this->body().state(map,lod);
+    if (this->valid()) {
+        map["valid"] << "true";
+        this->body().state(map,lod);
+    } else
+        map["valid"] << "false";
 }
 
 template <class SocketProtocol>