Hello,
in about two and a half week the annual open source developer conference
FOSDEM (http://fosdem.org/2010/) takes place in Brussels. As in the last year
we would like to meet here for a social event, probably a dinner on Saturday
evening, 6th February.
This developers already confirmed their participance:
- Daniel-Constantin Mierla - he is also giving a talk about Kamailio 3.0.0 on
Saturday: http://fosdem.org/2010/schedule/events/kamailio_sip_server
- Elena-Ramona Modroiu
- Marius Zbihlei - 1&1 kamailio and sip-router development Bucharest
- Timo Reimann - 1&1 kamailio and sip-router development Karlsruhe
- Henning Westerholt
Participation at the event is free of charge, everybody pays for its own
expenses. In order to organize a restaurant and do a reservation please send
me a short mail if you would like to attend. Suggestions for a nice place with
good food and beer are also welcome.
Looking forward to see you in Brussels.
Best regards,
Henning
P.S.: Photos of the last year event can be found on our web site:
http://www.kamailio.org/events/2009-FOSDEM/FOSDEM2009-Album/
--
Henning Westerholt - Development Consumer Products / Consumer Core
1&1 Internet AG, Ernst-Frey-Str. 9, 76135 Karlsruhe, Germany
Hi,
we've updated the automatic packaging building process on the devel machine.
This builds now every night from the git master packages for debian lenny,
squeeze and sid. Hints about your archive configuration in order to use the
packages can be found on http://devel.kamailio.org/
They are build from the control files in pkg/debian, so at the moment some
packages with special dependencies are missing, and they are named with
'ser-$name'. The only thing that is modified at the moment is the version
number.
This packages are of course only for tests and not for production use. Please
let me know if there are any problems with the building service.
Henning
Module: sip-router
Branch: tmp/k3.0_sr_backports
Commit: 6b109fa2ae51e1b5676d163f015c8cda7ea4eef6
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=6b109fa…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Mon Feb 1 18:20:10 2010 +0100
core: stats events cbs are called only if USE_CORE_STATS is defined
Use macros instead of triggering directly various SREV_CORE_STATS
callbacks. This way if compiled without core stats support
(USE_CORE_STATS), there will be no performance impact (the macros
will be empty). All the macros are defined in core_stats.h.
---
core_stats.h | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++
forward.c | 11 ++++--
parser/msg_parser.c | 4 +-
parser/parse_uri.c | 4 +-
receive.c | 13 ++++---
5 files changed, 117 insertions(+), 14 deletions(-)
diff --git a/core_stats.h b/core_stats.h
new file mode 100644
index 0000000..729d73e
--- /dev/null
+++ b/core_stats.h
@@ -0,0 +1,99 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2010 iptelorg GmbH
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+/** macros used for various core statistics.
+ * (if USE_CORE_STATS is not defined they won't do anything)
+ * @file core_stats.h
+ * @ingroup core
+ */
+/*
+ * History:
+ * --------
+ * 2010-02-01 initial version (andrei)
+*/
+
+#ifndef __core_stats_h
+#define __core_stats_h
+
+/* define USE_CORE_STATS to enable statistics events
+ (SREV_CORE_STATS callbacks) */
+/*#define USE_CORE_STATS */
+
+#ifndef USE_CORE_STATS
+
+#define STATS_REQ_FWD_DROP()
+#define STATS_REQ_FWD_OK()
+#define STATS_RPL_FWD_DROP()
+#define STATS_RPL_FWD_OK()
+#define STATS_BAD_MSG()
+#define STATS_BAD_RPL()
+#define STATS_BAD_URI()
+#define STATS_BAD_MSG_HDR()
+
+#else /* USE_CORE_STATS */
+
+#include "events.h"
+
+/** called each time a received request is dropped.
+ * The request might be dropped explicitly (e.g. pre script callback)
+ * or there might be an error while trying to forward it (e.g. send).
+ */
+#define STATS_REQ_FWD_DROP() sr_event_exec(SREV_CORE_STATS, (void*)3)
+
+
+/** called each time forwarding a request succeeds (send).*/
+#define STATS_REQ_FWD_OK() sr_event_exec(SREV_CORE_STATS, (void*)1)
+
+
+/** called each time forwarding a reply fails.
+ * The reply forwarding might fail due to send errors,
+ * pre script callbacks (module denying forwarding) or explicit script
+ * drop (drop or module function returning 0).
+ */
+#define STATS_RPL_FWD_DROP() sr_event_exec(SREV_CORE_STATS, (void*)4)
+
+
+/* called each time forwarding a reply succeeds. */
+#define STATS_RPL_FWD_OK() sr_event_exec(SREV_CORE_STATS, (void*)2)
+
+
+/** called each time a received request is too bad to process.
+ * For now it's called in case the message does not have any via.
+ */
+#define STATS_BAD_MSG() sr_event_exec(SREV_CORE_STATS, (void*)5)
+
+
+/** called each time a received reply is too bad to process.
+ * For now it's called in case the message does not have any via.
+ */
+#define STATS_BAD_RPL() sr_event_exec(SREV_CORE_STATS, (void*)6)
+
+
+/** called each time uri parsing fails. */
+#define STATS_BAD_URI() sr_event_exec(SREV_CORE_STATS, (void*)7)
+
+
+/** called each time parsing some header fails. */
+#define STATS_BAD_MSG_HDR() sr_event_exec(SREV_CORE_STATS, (void*)8)
+
+
+
+#endif /* USE_CORE_STATS */
+
+#endif /*__core_stats_h*/
+
+/* vi: set ts=4 sw=4 tw=79:ai:cindent: */
diff --git a/forward.c b/forward.c
index 3a4fbf4..4b88780 100644
--- a/forward.c
+++ b/forward.c
@@ -94,6 +94,7 @@
#include "dst_blacklist.h"
#endif
#include "compiler_opt.h"
+#include "core_stats.h"
#ifdef DEBUG_DMALLOC
#include <dmalloc.h>
@@ -582,10 +583,12 @@ end:
#endif
if (buf) pkg_free(buf);
/* received_buf & line_buf will be freed in receive_msg by free_lump_list*/
+#if defined STATS_REQ_FWD_OK || defined STATS_REQ_FWD_DROP
if(ret==0)
- sr_event_exec(SREV_CORE_STATS, (void*)1);
+ STATS_REQ_FWD_OK();
else
- sr_event_exec(SREV_CORE_STATS, (void*)3);
+ STATS_REQ_FWD_DROP();
+#endif /* STATS_REQ_FWD_* */
return ret;
}
@@ -740,7 +743,7 @@ int forward_reply(struct sip_msg* msg)
#endif
if (msg_send(&dst, new_buf, new_len)<0)
{
- sr_event_exec(SREV_CORE_STATS, (void*)4);
+ STATS_RPL_FWD_DROP();
goto error;
}
#ifdef STATS
@@ -751,7 +754,7 @@ int forward_reply(struct sip_msg* msg)
msg->via2->host.len, msg->via2->host.s,
(unsigned short) msg->via2->port);
- sr_event_exec(SREV_CORE_STATS, (void*)2);
+ STATS_RPL_FWD_OK();
pkg_free(new_buf);
skip:
return 0;
diff --git a/parser/msg_parser.c b/parser/msg_parser.c
index 48f666c..1cb530c 100644
--- a/parser/msg_parser.c
+++ b/parser/msg_parser.c
@@ -54,7 +54,7 @@
#include "../data_lump_rpl.h"
#include "../mem/mem.h"
#include "../error.h"
-#include "../events.h"
+#include "../core_stats.h"
#include "../globals.h"
#include "parse_hname2.h"
#include "parse_uri.h"
@@ -279,7 +279,7 @@ char* get_hdr_field(char* buf, char* end, struct hdr_field* hdr)
return tmp;
error:
DBG("get_hdr_field: error exit\n");
- sr_event_exec(SREV_CORE_STATS, (void*)8);
+ STATS_BAD_MSG_HDR();
hdr->type=HDR_ERROR_T;
hdr->len=tmp-hdr->name.s;
return tmp;
diff --git a/parser/parse_uri.c b/parser/parse_uri.c
index efcc54b..47cb1bc 100644
--- a/parser/parse_uri.c
+++ b/parser/parse_uri.c
@@ -50,7 +50,7 @@
#include "../ut.h" /* q_memchr */
/* #endif */
#include "../error.h"
-#include "../events.h"
+#include "../core_stats.h"
/* buf= pointer to begining of uri (sip:x@foo.bar:5060;a=b?h=i)
* len= len of uri
@@ -1224,7 +1224,7 @@ error_bug:
error_exit:
ser_error=E_BAD_URI;
uri->type=ERROR_URI_T;
- sr_event_exec(SREV_CORE_STATS, (void*)7);
+ STATS_BAD_URI();
return E_BAD_URI;
}
diff --git a/receive.c b/receive.c
index 60eefa7..2496e41 100644
--- a/receive.c
+++ b/receive.c
@@ -64,6 +64,7 @@
#include "tcp_server.h" /* for tcpconn_add_alias */
#include "tcp_options.h" /* for access to tcp_accept_aliases*/
#include "cfg/cfg.h"
+#include "core_stats.h"
#ifdef DEBUG_DMALLOC
#include <mem/dmalloc.h>
@@ -149,7 +150,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
if ((msg->via1==0) || (msg->via1->error!=PARSE_OK)){
/* no via, send back error ? */
LOG(L_ERR, "ERROR: receive_msg: no via found in request\n");
- sr_event_exec(SREV_CORE_STATS, (void*)5);
+ STATS_BAD_MSG();
goto error02;
}
/* check if necessary to add receive?->moved to forward_req */
@@ -184,7 +185,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
*/
if (exec_pre_script_cb(msg, REQUEST_CB_TYPE)==0 )
{
- sr_event_exec(SREV_CORE_STATS, (void*)3);
+ STATS_REQ_FWD_DROP();
goto end; /* drop the request */
}
@@ -212,7 +213,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
if ((msg->via1==0) || (msg->via1->error!=PARSE_OK)){
/* no via, send back error ? */
LOG(L_ERR, "ERROR: receive_msg: no via found in reply\n");
- sr_event_exec(SREV_CORE_STATS, (void*)6);
+ STATS_BAD_RPL();
goto error02;
}
@@ -230,8 +231,8 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
*/
if (exec_pre_script_cb(msg, ONREPLY_CB_TYPE)==0 )
{
- sr_event_exec(SREV_CORE_STATS, (void*)4);
- goto end; /* drop the request */
+ STATS_RPL_FWD_DROP();
+ goto end; /* drop the reply */
}
/* exec the onreply routing script */
@@ -246,7 +247,7 @@ int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
}else
#endif /* NO_ONREPLY_ROUTE_ERROR */
if (unlikely(ret==0 || (ctx.run_flags&DROP_R_F))){
- sr_event_exec(SREV_CORE_STATS, (void*)4);
+ STATS_RPL_FWD_DROP();
goto skip_send_reply; /* drop the message, no error */
}
}