private void ClientReceived(object o) { var client = (TcpClient)o; if (client.Connected) { MyWebRequest msg = null; try { msg = MyWebRequest.Create(client); if (msg.Url != null) { if (P2pProxyApp.Debug) { P2pProxyApp.Log.Write(string.Format("WebServer::ClientRequest({0}): {1}", msg.Client.Client.RemoteEndPoint, msg.Url), TypeMessage.Info); } if (_routers.ContainsKey(msg.Method + "_" + msg.Url)) { _routers[msg.Method + "_" + msg.Url].Invoke(msg); } else { Send404(msg); } } } catch (SoapException ex) { MyWebResponse response = msg.GetResponse(); try { response.SendSoapErrorHeadersBody(ex.Code, ex.Message); } catch { } } catch (Exception ex) { P2pProxyApp.Log.Write(string.Format("WebServer::ClientRequest({0}):{1}", msg != null ? msg.Url + "?" + msg.QueryString : "", ex.Message), TypeMessage.Error); } finally { client.Close(); } } }