/// <summary> /// Accepts the received invitation. /// </summary> public void Accept() { if (status != P2PSessionStatus.WaitingForLocal) { Trace.WriteLineIf(Settings.TraceSwitch.TraceWarning, String.Format("Accept called, but we're not waiting for the local client (State {0})", status), GetType().Name); } else { Trace.WriteLineIf(Settings.TraceSwitch.TraceInfo, String.Format("{0} accepted", SessionId), GetType().Name); SLPStatusMessage slpMessage = new SLPStatusMessage(RemoteContactEPIDString, 200, "OK"); slpMessage.Target = RemoteContactEPIDString; slpMessage.Source = LocalContactEPIDString; slpMessage.Branch = invitation.Branch; slpMessage.CallId = invitation.CallId; slpMessage.CSeq = 1; slpMessage.ContentType = "application/x-msnmsgr-sessionreqbody"; slpMessage.BodyValues["SessionID"] = SessionId.ToString(System.Globalization.CultureInfo.InvariantCulture); Send(WrapSLPMessage(slpMessage), delegate(P2PMessage ack) { OnActive(EventArgs.Empty); if (p2pApplication != null) { p2pApplication.Start(); } else { Trace.WriteLineIf(Settings.TraceSwitch.TraceWarning, "Unable to start p2p application (null)", GetType().Name); } }); } }