Socket: Fix handle.state() on invalid handles
[senf.git] / Socket / ServerSocketHandle.cti
index 4044b1e..34b850b 100644 (file)
@@ -114,8 +114,8 @@ template <class SPolicy>
 prefix_ typename senf::ServerSocketHandle<SPolicy>::ClientHandle
 senf::ServerSocketHandle<SPolicy>::acceptfrom(Address & addr)
 {
-    return ClienttHandle(this->protocol().clone(),
-                         SPolicy::CommunicationPolicy::accept(*this,addr));
+    return ClientHandle(this->body().clone(
+                            SPolicy::CommunicationPolicy::accept(*this,addr), false));
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -147,7 +147,11 @@ template <class SPolicy>
 prefix_ void senf::ServerSocketHandle<SPolicy>::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 SPolicy>