public void Send(P2PMessage p2pMessage, int ackTimeout, AckHandler ackHandler) { ResetTimeoutTimer(); if (p2pBridge == null) { MigrateToOptimalBridge(); } p2pBridge.Send(this, Remote, RemoteContactEndPointID, p2pMessage, ackTimeout, ackHandler); }
internal void SendSLPStatus(P2PBridge bridge, P2PMessage msg, Contact dest, Guid destGuid, int code, string phrase) { string target = dest.Account.ToLowerInvariant(); if (msg.Version == P2PVersion.P2PV2) { target += ";" + destGuid.ToString("B"); } SLPMessage slp = new SLPStatusMessage(target, code, phrase); if (msg.IsSLPData) { SLPMessage msgSLP = msg.InnerMessage as SLPMessage; slp.Branch = msgSLP.Branch; slp.CallId = msgSLP.CallId; slp.Source = msgSLP.Target; slp.ContentType = msgSLP.ContentType; if (msgSLP.BodyValues.ContainsKey("SessionID")) { slp.BodyValues["SessionID"] = msgSLP.BodyValues["SessionID"]; } } else { slp.ContentType = "null"; } P2PMessage response = new P2PMessage(msg.Version); response.InnerMessage = slp; if (msg.Version == P2PVersion.P2PV1) { response.V1Header.Flags = P2PFlag.MSNSLPInfo; } else if (msg.Version == P2PVersion.P2PV2) { response.V2Header.OperationCode = (byte)OperationCode.None; response.V2Header.TFCombination = TFCombination.First; } bridge.Send(null, dest, destGuid, response); }
internal void SendSLPStatus(P2PBridge bridge, P2PMessage msg, Contact dest, Guid destGuid, int code, string phrase) { string target = dest.Account.ToLowerInvariant(); if (msg.Version == P2PVersion.P2PV2) { target += ";" + destGuid.ToString("B"); } SLPMessage slp = new SLPStatusMessage(target, code, phrase); if (msg.IsSLPData) { SLPMessage msgSLP = msg.InnerMessage as SLPMessage; slp.Branch = msgSLP.Branch; slp.CallId = msgSLP.CallId; slp.Source = msgSLP.Target; slp.ContentType = msgSLP.ContentType; if (msgSLP.BodyValues.ContainsKey("SessionID")) { slp.BodyValues["SessionID"] = msgSLP.BodyValues["SessionID"]; } } else slp.ContentType = "null"; P2PMessage response = new P2PMessage(msg.Version); response.InnerMessage = slp; if (msg.Version == P2PVersion.P2PV1) { response.V1Header.Flags = P2PFlag.MSNSLPInfo; } else if (msg.Version == P2PVersion.P2PV2) { response.V2Header.OperationCode = (byte)OperationCode.None; response.V2Header.TFCombination = TFCombination.First; } bridge.Send(null, dest, destGuid, response); }