Browse Source

new exmample demonstating on_reply

Jiri Kuthan 22 years ago
parent
commit
b96ec53a91
1 changed files with 62 additions and 0 deletions
  1. 62 0
      examples/serial_183.cfg

+ 62 - 0
examples/serial_183.cfg

@@ -0,0 +1,62 @@
+#
+# $Id$
+#
+# this example shows how to use forking on failure
+#
+
+log_stderror=1
+fork=no
+listen=192.168.2.16
+debug=3
+# ------------------ module loading ----------------------------------
+
+# Uncomment this if you want to use SQL database
+loadmodule "modules/tm/tm.so"
+loadmodule "modules/sl/sl.so"
+loadmodule "modules/maxfwd/maxfwd.so"
+# -------------------------  request routing logic -------------------
+
+# main routing logic
+
+route{
+
+	# initial sanity checks -- messages with
+	# max_forwards==0, or excessively long requests
+	if (!mf_process_maxfwd_header("10")) {
+		sl_send_reply("483","Too Many Hops");
+		break;
+	};
+	if (len_gt( max_len )) {
+		sl_send_reply("513", "Message too big");
+		break;
+	};
+
+	/* skip register for testing purposes */
+	if (method=="REGISTER") { sl_send_reply("200", "ok"); break; };
+
+	if (!method=="ACK")
+		log(1, "forwarding now to primary destination\n");
+	if (method=="INVITE") {
+		rewriteuri("sip:[email protected]:5064");
+		# if transaction broken, try other an alternative
+		# route
+		t_on_failure("1");
+		# if a provisional came, stop alternating
+		t_on_reply("1");
+	};
+	t_relay();
+}
+
+failure_route[1] {
+	log(1, "trying at alternate destination\n");
+	append_branch("sip:[email protected]:5064");
+	t_relay();
+}
+
+onreply_route[1] {
+	log(1, "reply came in\n");
+	if (status=~"18[0-9]")  {
+		log(1, "provisional -- resetting negative failure\n");
+		t_on_failure("0");
+	};
+}