public IncomingMessageEx(IncomingMessage source, int transactionId)
		{
			TransactionId = transactionId;

			ConnectionAddresses = source.ConnectionAddresses;

			Reader = source.Reader;

			Headers = source.Header;
			Content = source.Content;
		}
Beispiel #2
0
		public Result Validate(IncomingMessage message)
		{
			if (message.Reader.SipVersion != 20)
				return new Result() { Error = Errors.SipVersionNotSupported, };

			var absent = message.Reader.ValidateMandatoryHeaders();
			if (absent != HeaderNames.None)
				return new Result() { Error = Errors.MandatoryHeaderAbsent, HeaderName = absent, };

			// callcentric does not send to tag in the NOTIFY
			//if (message.Reader.From.Tag.IsNotEmpty == false)
			//	return new Result() { Error = Errors.ToTagAbsent, };

			//var duplicate = message.Reader.ValidateHeadersDuplication();
			//if (duplicate != HeaderNames.None)
			//    return new Result() { Error = Errors.HeaderDuplication, HeaderName = duplicate, };

			return new Result();
		}
Beispiel #3
0
		private void OnIncomingSipMessage(IncomingMessage message)
		{
			IncomingMessage(message);
		}
Beispiel #4
0
 public ConnectionAddresses GetConnectionAddresses(Connection connection, int sessionId)
 {
     return(new ConnectionAddresses(IncomingMessage.GetTransport(connection), ajaxEndPoint, connection.RemoteEndPoint, sessionId));
 }
		public void PassResponse(int router, string message, int transactionId)
		{
			SipMessageReader reader;
			ArraySegment<byte> headers;
			ArraySegment<byte> content = new ArraySegment<byte>();
			GetReader(message, out reader, out headers);

			var im1 = new IncomingMessage(Transports.Tcp, new IPEndPoint(IPAddress.None, 22222),
				new IPEndPoint(IPAddress.None, 33333), 111111,
				reader, headers, content);

			var im2 = new IncomingMessageEx(im1, transactionId);

			proxy.OnIncomingResponse(producedRequests[router], im2);
		}
		public void PassRequest(string message)
		{
			SipMessageReader reader;
			ArraySegment<byte> headers;
			ArraySegment<byte> content = new ArraySegment<byte>();
			GetReader(message, out reader, out headers);

			var im1 = new IncomingMessage(Transports.Tcp, GetIPEndPoint(), GetIPEndPoint(), 44444, reader, headers, content);

			var im2 = new IncomingMessageEx(im1, message.StartsWith("CANCEL") ? serverCancelTransactionId-- : serverTransactionId--);

			bool found = false;
			foreach (var accepted in acceptedRequests)
			{
				if (accepted.Method == im2.Reader.Method)
					if (accepted.IsAcceptedRequest(im2.Reader))
					{
						proxy.OnIncomingRequest(accepted, im2);
						found = true;
					}
			}

			if (found == false)
				throw new InvalidProgramException("Accepted request not found for: " + message);

			//var caBytes = im2.ConnectionAddresses.ToLowerHexChars(im2.TransactionId);

			//return Encoding.UTF8.GetString(caBytes.Array, caBytes.Offset, caBytes.Count);
		}