Hi all,
as it has been three month since the last minor release of the kamailio 1.5
branch i'd suggest that we do a 1.5.3 release soon. I want to propose next
wednesday the 14.10.2009 as date for the release.
So if you have any pending patches in the trunk or in your internal
repositories that you want to like to see in this release, please commit them
until 12:00 UTC this day.
Thank you,
Henning
--
Henning Westerholt - Development Consumer Products / Consumer Core
1&1 Internet AG, Ernst-Frey-Str. 9, 76135 Karlsruhe, Germany
Module: sip-router
Branch: master
Commit: 4079ba2c041c7172b13496b285a359ec9bff9d3b
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=4079ba2…
Author: oej <oej(a)edvina.net>
Committer: oej <oej(a)edvina.net>
Date: Mon Oct 19 22:40:12 2009 +0200
Doxygen fix for XMPP page
Starting to pick out documentation hidden deep in the source code and adding them as
"related pages" in the doxygen. Please check.
---
modules_k/xmpp/xmpp.c | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/modules_k/xmpp/xmpp.c b/modules_k/xmpp/xmpp.c
index 2403957..5d634d4 100644
--- a/modules_k/xmpp/xmpp.c
+++ b/modules_k/xmpp/xmpp.c
@@ -34,23 +34,34 @@
* \brief Kamailio XMPP module ::
* \ingroup xmpp
*
+ * - \ref XMPProuting
+ *
* \page XMPProuting XMPP to SIP transport interface
*
* An inbound SIP URI:
- * from sip:user1@domain1 to sip:user2*domain2@gateway_domain
+\verbatim
+ from sip:user1@domain1 to sip:user2*domain2@gateway_domain
+\endverbatim
* is translated to an XMPP JID:
- * from user1*domain1@xmpp_domain to user2@domain2
+\verbatim
+ from user1*domain1@xmpp_domain to user2@domain2
+\endverbatim
*
* An inbound XMPP JID (uri):
- * from user1@domain1 to user2*domain2@xmpp_domain
+\verbatim
+ from user1@domain1 to user2*domain2@xmpp_domain
+\endverbatim
* is translated to a SIP URI:
- * from sip:user1*domain1@gateway_domain to sip:user2@domain2
+\verbatim
+ from sip:user1*domain1@gateway_domain to sip:user2@domain2
+\endverbatim
*
* Where '*' is the domain_separator, and gateway_domain and
* xmpp_domain are defined below.
*
*
* 2-way dialback sequence with xmppd2:
+\verbatim
*
* Originating server (us) Receiving server (them) Authoritative server (us)
* ----------------------- ----------------------- -------------------------
@@ -90,6 +101,7 @@
* | incoming <message/> |
* |------------------------------>|
*
+\endverbatim
* Note: Dialback is an old mechanism that is now replaced by TLS connections
* in "modern" XMPP servers. With TLS, dialback is not used.
*/
Module: sip-router
Branch: master
Commit: 89f4581214b562073f9436ec1bc13f589b1d3c9b
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=89f4581…
Author: Jan Janak <jan(a)ryngle.com>
Committer: Jan Janak <jan(a)ryngle.com>
Date: Mon Oct 19 20:19:44 2009 +0200
sr-oob.cfg: Updated for latest sip-router code.
Updates the all-inclusiv ser-oob configuration file to work with the
latest sip-router code. Changes include:
* Load enum module which is used by one of the route sections.
* Replace expressions like if (@hf.value["contact"]) with
if (@hf.value["contact"] != "")
* When testing for an avp value, test that the avp is defined first
with "defined".
---
etc/sip-router-oob.cfg | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/etc/sip-router-oob.cfg b/etc/sip-router-oob.cfg
index 55f6ffc..145541f 100644
--- a/etc/sip-router-oob.cfg
+++ b/etc/sip-router-oob.cfg
@@ -292,7 +292,7 @@ loadmodule "db_ops"
loadmodule "exec"
loadmodule "cfg_rpc"
loadmodule "eval"
-#loadmodule "enum"
+loadmodule "enum"
#loadmodule "tls"
# ----------------- Declaration of Script Flags -----------------------------
@@ -740,7 +740,7 @@ route[UAC_NAT_DETECTION]
# nat_uac_test for UDP to "3" or even "1".
if ((proto == UDP && nat_uac_test("19")) ||
(nat_uac_test("3")) ||
- (@hf_value["contact"] && @contact.uri.params.maddr))
+ (@hf_value["contact"] != "" && @contact.uri.params.maddr != ""))
{
setflag(FLAG_NAT);
if (method == "REGISTER") {
@@ -790,7 +790,7 @@ route[UAS_NAT_DETECTION]
# nat_uac_test for UDP to just "1".
if ( (proto == UDP && nat_uac_test("33")) ||
(nat_uac_test("1") ||
- (@hf_value["contact"] && @contact.uri.params.maddr)))
+ (@hf_value["contact"] != "" && @contact.uri.params.maddr != "")))
{
fix_nated_contact();
}
@@ -1123,7 +1123,7 @@ route[AUTHENTICATION]
sl_reply("400", "Bad Request");
}
else {
- if ($digest_challenge) {
+ if (defined $digest_challenge && $digest_challenge != "") {
append_to_reply("%$digest_challenge");
}
sl_reply("407", "Proxy Authentication Required");
@@ -1202,7 +1202,7 @@ route[INBOUND]
# Check for call forwarding of the callee.
# Note: The forwarding target has to be full routable URI
# in this example.
- if ($tu.fwd_always_target != "") {
+ if (defined $tu.fwd_always_target && $tu.fwd_always_target != "") {
attr2uri("$tu.fwd_always_target");
# If we are forwarding to ourselves, don't remove
@@ -1212,7 +1212,7 @@ route[INBOUND]
# still be problematic -- credentials are already
# removed when we forward. Consider using a 3xx.
lookup_domain("$td", "@ruri.host");
- if ($t.did != "") {
+ if (defined $t.did && $t.did != "") {
setflag(FLAG_DONT_RM_CRED);
}
route(FORWARD);
@@ -1526,7 +1526,7 @@ onsend_route
# This helps to stop policy bypasses (gateway IP uploaded as a
# forked contact, or a call-forwarding destination, or a DNS name,
# or a preloaded route, or something else possibly)
- if (to_ip==$g.gw_ip && !isflagset(FLAG_PSTN_ALLOWED)
+ if (defined $g.gw_ip && to_ip==$g.gw_ip && !isflagset(FLAG_PSTN_ALLOWED)
&& !isflagset(FLAG_TOTAG)
&& method != "ACK" && method != "CANCEL")
{
Module: sip-router
Branch: andrei/cdefs2doc
Commit: 56a77aea9b3af5540f2415f0d8b751375f5d876d
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=56a77ae…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Mon Oct 19 18:30:45 2009 +0200
doc: script to generate select lists from C code
Added a perl script that tries to generate the list of selects
defined in a C file.
The script works by looking for the first select_row_t array with
an initializer in the .c file. It then tries to generate the list
of all possible selects (but it still has some bugs, especially on
matching params to a select part).
Note: there is no documentation generated besides the list
(the select format is not auto-documented).
---
doc/scripts/cdefs2doc/dump_selects.pl | 392 +++++++++++++++++++++++++++++++++
1 files changed, 392 insertions(+), 0 deletions(-)
Diff: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commitdiff;h=56a…
Module: sip-router
Branch: andrei/cdefs2doc
Commit: 2b37b2df33aeec32448fa2a765538e561507720b
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=2b37b2d…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Mon Oct 19 18:22:55 2009 +0200
doc: script to generate rpc lists from C code
Added a perl script that generates the list of RPCs defined in a C
file. The list contains also the RPC documentation.
The script works by looking for the first rpc_export_t array in
the file that has an initializer and using it to get all the rpc
definitions. Then it looks for all the corresponding *doc
variables (char* arrays holding the help message and the
signature) and extracts the doc string from their initializer.
E.g.:
dump_rpcs.pl --file ../../../core_cmd.c
...
37. dst_blacklist.view
dst blacklist dump in human-readable format.
...
---
doc/scripts/cdefs2doc/dump_rpcs.pl | 389 ++++++++++++++++++++++++++++++++++++
1 files changed, 389 insertions(+), 0 deletions(-)
Diff: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commitdiff;h=2b3…
Module: sip-router
Branch: andrei/cdefs2doc
Commit: 8de15e2147533941b18a1ea1c018b420a667a374
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=8de15e2…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Mon Oct 19 18:36:52 2009 +0200
doc: added makefiles for auto-gen. rpc and cfg vars lists
---
doc/cfg_list/Makefile | 145 +++++++++++++++++++++++++++++++++++++++++++++++++
doc/rpc_list/Makefile | 144 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 289 insertions(+), 0 deletions(-)
diff --git a/doc/cfg_list/Makefile b/doc/cfg_list/Makefile
new file mode 100644
index 0000000..881f735
--- /dev/null
+++ b/doc/cfg_list/Makefile
@@ -0,0 +1,145 @@
+
+COREPATH=../..
+
+#include $(COREPATH)/Makefile.defs
+
+CFG2TXT=../scripts/cdefs2doc/dump_cfg_defs.pl
+
+# list of files contanining cfg defs in the following format:
+# <filename>:<cfg_grp_name>
+files_list=$(COREPATH)/cfg_core.c:core $(COREPATH)/tcp_options.c:tcp \
+ $(COREPATH)/sctp_options.c:sctp \
+ $(COREPATH)/modules_s/maxfwd/maxfwd.c:maxfwd \
+ $(COREPATH)/modules/tm/config.c:tm
+
+# list of excluded groups
+grp_exclude=pa
+# list of file prefixes to exclude (full path needed)
+file_exclude= $(COREPATH)/modules_s/tls/
+
+# special per file group overrides
+# format= grp_filename=... ,where filename does not contain the extension
+# e.g.:
+# grp_f_tcp_options=tcp
+# grp_f_sctp_options=sctp
+
+# special per group group name overrides
+# e.g.:
+# grp_g_maxfwd=mf
+
+# override auto-detected group if set to 1 (else the group is used inside the
+# file only if it cannot be aut-odetected)
+ifeq ($(group_override),1)
+override force_grp=force-
+else
+override force_grp=
+endif
+
+# command used for gcc (contains extra includes)
+gcc=gcc -I$(COREPATH)/lib -I/usr/include/libxml2
+
+#filtered files list
+flist=$(filter-out $(join $(file_exclude),%),\
+ $(filter-out $(join %:,$(grp_exclude)),$(files_list)) )
+
+# throws an error if input is not in the format filename:grp
+check_fname_grp=$(if $(filter-out 2,$(words $(subst :, ,$(1)))),\
+ $(error bad format "$(1)", it should be filename:grp))
+
+# get prereq from file:grp (get_prereq(file:grp) => file)
+get_prereq=$(firstword $(subst :, ,$(1)))
+
+# get grp from file:grp (get_grp(file:grp) => grp)
+get_listed_grp=$(word 2, $(subst :, ,$(1)))
+
+# get base file name from file:grp: get_bname(file:grp)
+# => basename(file) without extension (e.g. get_bname(foo/bar.c:x) => bar)
+#
+get_bname=$(basename $(notdir $(call get_prereq,$(1))))
+
+#get grp from file:grp, using the overrides
+get_grp=$(strip $(if $(grp_f_$(call get_bname,$(1))), \
+ $(grp_f_$(call get_bname,$(1))),\
+ $(if $(grp_g_$(call get_listed_grp,$(1))),\
+ $(grp_g_$(call get_listed_grp,$(1))),\
+ $(call get_listed_grp,$(1))) ) )
+
+# get target from file:grp (get_target(file:grp) => cfg_grp.txt)
+get_target=cfg_$(call get_grp,$(1)).txt
+
+define mk_rules
+
+$(call check_fname_grp, $(1))
+
+#$$(info generating cfg_$$(call get_grp,$(1)).txt: $$(call get_prereq,$(1)))
+
+$$(call get_target,$(1)): $$(call get_prereq,$(1)) Makefile $(CFG2TXT)
+ $(CFG2TXT) --file $$< --$(force_grp)grp=$$(call get_grp,$(1)) \
+ --gcc="$(gcc)" > "$$@" || (rm -f "$$@"; exit 1)
+
+
+clean_$$(call get_target,$(1)):
+ rm -f "$$(call get_target,$(1))"
+
+all: $$(call get_target,$(1))
+
+clean: clean_$$(call get_target,$(1))
+
+
+endef
+
+
+# help will be the default rule (on-purpose since without having a patched
+# GCC:TranslationUnit module, make all won't work)
+.PHONY: help
+help:
+ @echo "To regenerate $(foreach f,$(flist),$(call get_target,$f) )"
+ @echo "type: $(MAKE) all ."
+ @echo "or to regenerate all the cfg documentation by searching all"
+ @echo " the source files for definitions, type: $(MAKE) autogen ."
+ @echo "NOTE: you need the GCC:TranslationUnit perl module with an "
+ @echo "extra patch applied (see $(CFG2TXT) --patch)."
+
+.PHONY: all
+all:
+
+.PHONY: clean
+clean:
+
+.PHONY: proper
+proper:
+ @rm -f cfg_*.txt
+
+find_cfg_files_cmd= find $(COREPATH) -type f -name "*.c" \
+ -exec grep "cfg_def_t[ ][a-zA-Z0-9_]*\[\][ ]*=" /dev/null {} \; \
+ | cut -d: -f1
+
+# shell command to generate a file:grp list from a list of files
+# grp will be the modulename if the file is in a module directory or
+# the file name with the extension and _cfg, cfg_ or _options stripped out of
+# it.
+# output: list of " "filename":"grpname
+gen_file_grp_cmd=\
+sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
+ -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
+ -e "s!^\([^ :]*\):\(.*\)_cfg[_]*!:\1:\2!" \
+ -e "s!^\([^ :]*\):\(.*\)cfg[_]*!\1:\2!" \
+ -e "s!^\([^ :]*\):\(.*\)_options[_]*!\1:\2!"
+
+# finds all the files containing cfg defs
+.PHONY: find
+find:
+ @$(find_cfg_files_cmd)
+
+# print the list of the autogenerated files
+.PHONY: print-lst
+print-lst:
+ @$(find_cfg_files_cmd) | $(gen_file_grp_cmd)
+
+# try to generate the docs from all the sources
+.PHONY: autogen
+autogen:
+ LST=`$(find_cfg_files_cmd)| $(gen_file_grp_cmd) | xargs echo` && \
+ [ -n "$$LST" ] && $(MAKE) all files_list="$$LST"
+
+$(foreach f,$(flist),$(eval $(call mk_rules,$(f))))
diff --git a/doc/rpc_list/Makefile b/doc/rpc_list/Makefile
new file mode 100644
index 0000000..18d6918
--- /dev/null
+++ b/doc/rpc_list/Makefile
@@ -0,0 +1,144 @@
+
+COREPATH=../..
+
+#include $(COREPATH)/Makefile.defs
+
+CFG2TXT=../scripts/cdefs2doc/dump_rpcs.pl
+
+# list of files contanining rpc defs in the following format:
+# <filename>:<cfg_grp_name>
+# one way to quickly fill it up is pasting the output of
+# make print-lst|xargs echo
+files_list=$(COREPATH)/core_cmd.c:core
+
+# list of excluded groups
+grp_exclude=pa
+# list of file prefixes to exclude (full path needed)
+file_exclude=$(COREPATH)/modules_s/tls/
+
+# special per file group overrides
+# format= grp_filename=... ,where filename does not contain the extension
+# e.g.:
+# grp_f_tcp_options=tcp
+# grp_f_sctp_options=sctp
+
+# special per group group name overrides
+# e.g.:
+# grp_g_maxfwd=mf
+
+# override auto-detected group if set to 1 (else the group is used inside the
+# file only if it cannot be aut-odetected)
+ifeq ($(group_override),1)
+override force_grp=force-
+else
+override force_grp=
+endif
+
+# command used for gcc (contains extra includes)
+gcc=gcc -I$(COREPATH)/lib -I/usr/include/libxml2
+
+#filtered files list
+flist=$(filter-out $(join $(file_exclude),%),\
+ $(filter-out $(join %:,$(grp_exclude)),$(files_list)) )
+
+# throws an error if input is not in the format filename:grp
+check_fname_grp=$(if $(filter-out 2,$(words $(subst :, ,$(1)))),\
+ $(error bad format "$(1)", it should be filename:grp))
+
+# get prereq from file:grp (get_prereq(file:grp) => file)
+get_prereq=$(firstword $(subst :, ,$(1)))
+
+# get grp from file:grp (get_grp(file:grp) => grp)
+get_listed_grp=$(word 2, $(subst :, ,$(1)))
+
+# get base file name from file:grp: get_bname(file:grp)
+# => basename(file) without extension (e.g. get_bname(foo/bar.c:x) => bar)
+#
+get_bname=$(basename $(notdir $(call get_prereq,$(1))))
+
+#get grp from file:grp, using the overrides
+get_grp=$(strip $(if $(grp_f_$(call get_bname,$(1))), \
+ $(grp_f_$(call get_bname,$(1))),\
+ $(if $(grp_g_$(call get_listed_grp,$(1))),\
+ $(grp_g_$(call get_listed_grp,$(1))),\
+ $(call get_listed_grp,$(1))) ) )
+
+# get target from file:grp (get_target(file:grp) => rpc_grp.txt)
+get_target=rpc_$(call get_grp,$(1)).txt
+
+define mk_rules
+
+$(call check_fname_grp, $(1))
+
+#$$(info generating rpc_$$(call get_grp,$(1)).txt: $$(call get_prereq,$(1)))
+
+$$(call get_target,$(1)): $$(call get_prereq,$(1)) Makefile $(CFG2TXT)
+ $(CFG2TXT) --file $$< --$(force_grp)grp=$$(call get_grp,$(1)) \
+ --gcc="$(gcc)" > "$$@" || (rm -f "$$@"; exit 1)
+
+
+clean_$$(call get_target,$(1)):
+ rm -f "$$(call get_target,$(1))"
+
+all: $$(call get_target,$(1))
+
+clean: clean_$$(call get_target,$(1))
+
+
+endef
+
+
+# help will be the default rule (on-purpose since without having a patched
+# GCC:TranslationUnit module, make all won't work)
+.PHONY: help
+help:
+ @echo "To regenerate $(foreach f,$(flist),$(call get_target,$f) )"
+ @echo "type: $(MAKE) all ."
+ @echo "or to regenerate all the rpc lists by searching all"
+ @echo " the source files for definitions, type: $(MAKE) autogen ."
+ @echo "NOTE: you need the GCC:TranslationUnit perl module with an "
+ @echo "extra patch applied (see $(CFG2TXT) --patch)."
+
+.PHONY: all
+all:
+
+.PHONY: clean
+clean:
+
+.PHONY: proper
+proper:
+ @rm -f rpc_*.txt
+
+find_rpc_files_cmd= find $(COREPATH) -type f -name "*.c" \
+ -exec grep "rpc_export_t[ ][a-zA-Z0-9_]*\[\][ ]*=" /dev/null {} \; \
+ | cut -d: -f1
+
+# shell command to generate a file:grp list from a list of files
+# grp will be the modulename if the file is in a module directory or
+# the file name with the extension and _cmd, cmd_ or _rpc stripped out of
+# it.
+# output: list of " "filename":"grpname
+gen_file_grp_cmd=\
+sed -e "s!\(.*/modules[^/]*/\([^/][^/]*\)/.*\)! \1:\2!" \
+ -e "s!^\([^ ].*/\([^/.]*\)[^/]*$$\)!\1:\2!" \
+ -e "s!^\([^ :]*\):\(.*\)_cmd[_]*!\1:\2!" \
+ -e "s!^\([^ :]*\):\(.*\)cmd[_]*!\1:\2!" \
+ -e "s!^\([^ :]\):\(.*\)_rpc[_]*!\1:\2!"
+
+# finds all the files containing cfg defs
+.PHONY: find
+find:
+ @$(find_rpc_files_cmd)
+
+# print the list of the autogenerated files
+.PHONY: print-lst
+print-lst:
+ @$(find_rpc_files_cmd) | $(gen_file_grp_cmd)
+
+# try to generate the docs from all the sources
+.PHONY: autogen
+autogen:
+ LST=`$(find_rpc_files_cmd)| $(gen_file_grp_cmd) | xargs echo` && \
+ [ -n "$$LST" ] && $(MAKE) all files_list="$$LST"
+
+$(foreach f,$(flist),$(eval $(call mk_rules,$(f))))