From miconda@gmail.com Fri Oct 5 10:19:34 2012 From: Daniel-Constantin Mierla To: sr-users@lists.kamailio.org Subject: Re: [SR-Users] kamailio and app_python Date: Fri, 05 Oct 2012 10:19:26 +0200 Message-ID: <506E980E.3060900@gmail.com> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0070514737==" --===============0070514737== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hello, On 10/3/12 6:38 PM, Konstantin M. wrote: > Hello, > I can contribute a python part, but currently I'm a very busy at the=20 > moment. > I will write a patch to enable this ability (and many other features)=20 > as soon as possible. great, looking forward to your contributions. Cheers, Daniel > > 2012/10/3 Daniel-Constantin Mierla > > > Hello, > > the best would be to enhance the module to be able to get/set > pseudo-variables. I am not a python guy at all, so I cannot help > much, however I can assist with the C side in kamailio if someone > starts development and has questions about PVs. > > Calling config functions with parameters from embedded > interpreters exposes the risk of memory leaks, so it is better to > avoid it. Anyhow, added headers are not visible immediately (even > when done form config file), unless you call msg_apply_changes(). > > As a workaround for now, I suggest you put your token somehow in > request uri (e.g., a parameter). > > Cheers, > Daniel > > > On 10/1/12 9:53 AM, Victor Seva wrote: > > Hi, > > is there any way to return values from a call to python_exec > function > orther than the default returned integer? > > Following code generates this error: > Oct 1 09:08:23 zskio /usr/sbin/kamailio[21789]: ERROR: app_python > [python_support.c:38]: python_exec2: Unhandled exception in > the Python > code: > Oct 1 09:08:23 zskio /usr/sbin/kamailio[21789]: ERROR: app_python > [python_support.c:78]: #011RuntimeError: no such function > > if (!python_exec("get_provider", > $(var(clean_uri){s.prefixes}))) { > xlog("L_ERR","Can not choose a > provider for $rU\n"); > sl_send_reply("503","Can not choose a > provider > for $rU"); > exit; > } > > > def get_provider(self, msg, param): > # snipped code... > result =3D self.util.get_provider(prefixes, position, mode) > if result is not None: > LM_ERR("mode: %s position: %d result: %s" % (mode, > position, result)) > # this raises error > msg.call_function('rewritehost', > result['provider']['ip']) > return 1 > return -1 > > I tried to use headers as transport but this simple code does > not work: > > Oct 1 09:45:31 zskio /usr/sbin/kamailio[22303]: ERROR: >