#### Pre-Submission Checklist
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [ ] Small bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
This is a proposed evolution that adds socket timestamping of received UDP packets (using SO_TIMESTAMPNS).
It computes the delay between this timestamp and the time at which the packet is read by Kamailio.
This can then be accessed using pv "$TV(RD)" (RD for "receive relay").
Rationale :
The Kamailio server is handling traffic that is irregular and can temporarily spike to a point where all children are still busy when new packets are incoming on the network interface.
Consequently, these packets have to wait until a worker is available. The client will see a higher response time, that currently cannot be monitored by Kamailio itself.
This evolution allows to make this wait time observable by Kamailio, allowing to log or write the information to CDR for example.
If this is possible, I'd like to merge this feature in Kamailio.
Of course, I'm ready to discuss the PR and make any necessary changes.
All comments and reviews are most welcome.
I've tested this locally on Linux (3.10.0-957.10.1.el7.x86_64) with the latest Kamailio master as of 2023/03/23.
Thanks!
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3404
-- Commit Summary --
* core: add socket timestamp of received packets and keep track of receive delay
* pv: add $TV(RD) to get the new information "receive delay"
-- File Changes --
M src/core/ip_addr.h (1)
M src/core/parser/msg_parser.h (1)
M src/core/receive.c (8)
M src/core/udp_server.c (60)
M src/core/ut.h (34)
M src/modules/pv/pv_time.c (15)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3404.patchhttps://github.com/kamailio/kamailio/pull/3404.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3404
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3404(a)github.com>
<!--
Kamailio Project uses GitHub Issues only for bugs in the code or feature requests. Please use this template only for feature requests.
If you have questions about using Kamailio or related to its configuration file, ask on sr-users mailing list:
* http://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
If you have questions about developing extensions to Kamailio or its existing C code, ask on sr-dev mailing list:
* http://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
Please try to fill this template as much as possible for any issue. It helps the developers to troubleshoot the issue.
If you submit a feature request (or enhancement) add the description of what you would like to be added.
If there is no content to be filled in a section, the entire section can be removed.
You can delete the comments from the template sections when filling.
You can delete next line and everything above before submitting (it is a comment).
-->
### Description
Currently the functions set_advertised_address and set_advertised_port only accept strings as parameters. Trying to use it with variable causes an error.
Having the function using a hard coded value is not a good practice and in order to add flexibility to the script in different installations it would be nice to have this function accepting variables.
Also, the 'advertise' option on the 'listen' parameter is not always desired because it apply for all messages sent via the socket, and there are situations where different advertised IP for the same interface are necessary.
### Expected behavior
set_advertised_address should receive a variable as parameter and use its value to change the SIP headers.
### Actual observed behavior
Kamailio won't start if set_advertised_address is used with a variable due to script parse error or it will set the SIP message with the literal string "$var(test)" for example, instead of using the value of $var(test).
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
# kamailio -v
version: kamailio 5.2.2 (x86_64/linux) 67f967
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 67f967
compiled on 11:40:41 Mar 11 2019 with gcc 4.8.5
```
* **Operating System**:
<!--
Details about the operating system, the type: Linux (e.g.,: Debian 8.4, Ubuntu 16.04, CentOS 7.1, ...), MacOS, xBSD, Solaris, ...;
Kernel details (output of `uname -a`)
-->
```
# uname -a
Linux voice-conn-kamailio-1 3.10.0-514.21.2.el7.x86_64 #1 SMP Tue Jun 20 12:24:47 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/2137
Use tcp_send_timeout config option also on listening socket to timeout outbound messages sent on passive inbound connections.
#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [x] Small bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [x] PR should be backported to stable branches
- [x] Tested changes locally
- [x] Related to issue #3443
#### Description
Based on the description of core parameter "tcp_send_timeout" the timeout should also work for sending on forked incoming tcp connections. But sending on a broken connection causes the kernel to use the default values of `tcp_retries1` and `tcp_retries2` , leading to try to send a SIP message for 15 minutes. This makes absolutely no sense in a real time kamailio application.
Following man 7 tcp TCP_USER_TIMEOUT can be used on recent Linux kernels to utilize tcp_send_timeout:
TCP_USER_TIMEOUT (since Linux 2.6.37)
This option takes an unsigned int as an argument. When the value is greater than 0, it specifies the maximum
amount of time in milliseconds that transmitted data may remain unacknowledged before TCP will forcibly close the
corresponding connection and return ETIMEDOUT to the application. If the option value is specified as 0, TCP will
use the system default.
Increasing user timeouts allows a TCP connection to survive extended periods without end-to-end connectivity. De‐
creasing user timeouts allows applications to "fail fast", if so desired. Otherwise, failure may take up to 20
minutes with the current system defaults in a normal WAN environment.
This option can be set during any state of a TCP connection, but is effective only during the synchronized states
of a connection (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, and LAST-ACK). Moreover, when used
with the TCP keepalive (SO_KEEPALIVE) option, TCP_USER_TIMEOUT will override keepalive to determine when to close
a connection due to keepalive failure.
The option has no effect on when TCP retransmits a packet, nor when a keepalive probe is sent.
This option, like many others, will be inherited by the socket returned by accept(2), if it was set on the listen‐
ing socket.
Further details on the user timeout feature can be found in RFC 793 and RFC 5482 ("TCP User Timeout Option").
Having a tcp connection break by firewall or network breakdown the retransmits to this destination are now aborted after `tcp_send_timeout` seconds with a
NOTICE: <core> [core/tcp_read.c:267]: tcp_read_data(): error reading: Connection timed out (110) ([1.2.3.4]:51151 ->
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3528
-- Commit Summary --
* core: Add TCP_USER_TIMEOUT socket option on listening socket.
-- File Changes --
M src/core/tcp_main.c (13)
M src/core/tcp_options.h (7)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3528.patchhttps://github.com/kamailio/kamailio/pull/3528.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3528
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3528(a)github.com>
>From http://lists.kamailio.org/pipermail/sr-dev/2016-August/036231.html
On 24/08/16 10:17, Andreas Granig wrote:
> Hi,
>
> When translating strings with the dialplan module, you sometimes end up
> with very complex patterns for sanitizing the target string and
> performing some replacements, since for a given dialplan id, processing
> stops on the first match within the dialplan entries for a given dpid.
>
> The idea is to introduce a "continue" flag (default 0) in the dialplan
> table indicating to proceed with processing further dialplan entries
> within the given dpid after a match. The use case is to have a sanitize
> rule with highest priority which e.g. removes any spaces, dashes and
> parentheses from the target string, then with a lower priority do
> further processing with the cleaned up string, e.g. stripping leading
> double-zeroes or a plus when normalizing to E164 numbers, or replacing a
> single leading zero with the country code and so on.
>
> This is particularly useful when a user dials a number from an address
> book of some sort (e.g. on a mobile app) where number formats are stored
> with country-specific formating characters like "+1-(234)-567 890", and
> catching all of that in one rule results in really messy match/replace
> patterns.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/764
### Description
Hello,
When there is an error in my ruby script, app_ruby prints exception message without a stack trace, like this:
```
Dec 14 16:25:17 servername /usr/sbin/kamailio[24313]: ERROR: app_ruby [app_ruby_api.c:105]: app_ruby_print_last_exception(): exception: wrong number of arguments (1 for 2..3)
Dec 14 16:25:17 servername /usr/sbin/kamailio[24313]: ERROR: app_ruby [app_ruby_api.c:1078]: app_ruby_run_ex(): ruby exception (6) on callback for: ksr_request_route (res type: 17)
```
Altough this message tells what is the error, it doesn't tell **where** the error happened, so it's hard to find the source of the problem.
In ruby, exceptions have _backtrace()_ method returning stack trace as an array of strings. It would be really helpful if app_ruby also call this method and append its result to error message.
### Reproduction
in kamailio.cfg
```
loadmodule "app_ruby.so"
modparam("app_ruby", "load", "/etc/kamailio/ruby/routes.rb")
cfgengine "ruby"
```
in /etc/kamailio/ruby/routes.rb
```
def some_method(param1, param2)
end
def ksr_request_route
some_method(1)
end
```
### Expected behavior
```
Dec 14 16:46:24 servername /usr/sbin/kamailio[24314]: ERROR: <core> [core/kemi.c:87]: sr_kemi_core_err(): wrong number of arguments (1 for 2): /etc/kamailio/ruby/routes.rb:1:in `some_method'
/etc/kamailio/ruby/routes.rb:4:in `ksr_request_route'
```
#### Actual observed behavior
```
Dec 14 16:45:42 servername /usr/sbin/kamailio[24311]: ERROR: app_ruby [app_ruby_api.c:105]: app_ruby_print_last_exception(): exception: wrong number of arguments (1 for 2)
```
### Possible Solutions
Relevant code seem to be here: https://github.com/kamailio/kamailio/blob/master/src/modules/app_ruby/app_r…
I found example C code to print stack trace here but couldn't figure out how to integrate to app_ruby: http://zoo-project.org/svn/trunk/zoo-project/zoo-kernel/service_internal_ru…
Equivalent ruby code would be (this code is not idiomatic, my aim is to provide C-like ruby code):
```
def some_error_generating_method
method_taking_two_params(1)
rescue => exception
message = exception.to_s() + "\n"
stack_trace = exception.backtrace()
for line in stack_trace
message = message + line + "\n"
end
print(message)
end
```
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
version: kamailio 5.2.0 (x86_64/linux) 535e13
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 535e13
compiled on 10:26:34 Nov 28 2018 with gcc 4.8.5
```
* **Operating System**:
Centos 7.2 64bit
```
Linux servername 3.10.0-327.28.2.el7.x86_64 #1 SMP Wed Aug 3 11:11:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/1766
### Description
I migrate one of our old project on native to KEMI on app_python3 and get strange behavior - after some time kamailio stops processing requests/replies wit message "ksr_request_route/ksr_reply_route not found or is not callable"
### Troubleshooting
After some research with debug=3 and reading debug logs i found, that some of routes i forgot to rename in calls t_on_reply() and t_on_failure() - because they generates "not found or is not callable" in logs too. Also i check all event routes and found that some event_callbacks point to wrong KEMI functions.
Events of the form (which gave me the idea that it was the wrong names)
DEBUG: 887937087 INVITE app_python3 [python_exec.c:93]: apy_exec(): ksr_onrl_MANAGE not found or is not callable
DEBUG: app_python3 [python_exec.c:93]: apy_exec(): ksr_dialog_event not found or is not callable
presents in logs very rarely (I saw them only after hours of debugging) even after restart.
For me its look like that nonexisted routes completly stops interpretator and block all subsequent processing in the fork and kamailio very rarely has time to log it.
When i use right names of functions it works well and no "ksr_request_route/ksr_reply_route not found or is not callable"
PS: KSR.tm.t_on_branch() with wrong route generates normal exception and nonblock execution
#### Reproduction
Just use wrong names in KSR.tm.t_on_reply()/KSR.tm.t_on_failure() or modparam event_callback in any module (i got it with dispatcher and dialog)
#### Log Messages
Exception that generates by wrong function in KSR.tm.t_on_branch()
ERROR: 63586697 BYE app_python3 [python_support.c:156]: python_handle_exception(): apy_exec: ksr_request_route((null)): Unhandled exception in the Python code:
AttributeError: 'kamailio' object has no attribute 'ksr_br_MANAGE'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/etc/kamailio(a)REGION/python/request_route.py", line 38, in ksr_request_route
if self.ksr_WITHINDLG() == -255:
File "/etc/kamailio(a)REGION/python/ksr_WITHINDLG.py", line 27, in ksr_WITHINDLG
return self.ksr_RELAY()
File "/etc/kamailio(a)REGION/python/ksr_RELAY.py", line 17, in ksr_RELAY
if KSR.tm.t_relay() < 0:
SystemError: <built-in function t_relay> returned a result with an error set
### Possible Solutions
Use rigth names
### Additional Information
version: kamailio 5.7.1 (x86_64/linux) 4238e4
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 4238e4
compiled on 00:00:00 Sep 13 2022 with gcc 11.3.1
version: kamailio 5.6.4 (x86_64/linux)
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 10.2.1
* **Operating System**:
PRETTY_NAME="Oracle Linux Server 9.2"
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3572
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3572(a)github.com>
### Description
I recently downloaded kamailio 5.2.3 and tried to install it for investigation purposes. I was trying to include app_java module in order to execute some brief java apps in kamailio. But then I get the same issue wen I compile and when I run kamailio
Thank you for all the help you can give me
### Troubleshooting
I get the same bunch of warnings everytime I try to make all
java_msgobj.c: In function ‘fill_sipmsg_object’:
java_msgobj.c:83:27: warning: passing argument 2 of ‘(*env)->SetIntField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetIntField(env, SipMsgInstance, fid, msg->id);
^~~~~~~~~~~~~~
java_msgobj.c:83:27: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:96:27: warning: passing argument 2 of ‘(*env)->SetIntField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetIntField(env, SipMsgInstance, fid, msg->pid);
^~~~~~~~~~~~~~
java_msgobj.c:96:27: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:110:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:110:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:127:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:127:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:142:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:142:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:156:27: warning: passing argument 2 of ‘(*env)->SetIntField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetIntField(env, SipMsgInstance, fid, msg->len);
^~~~~~~~~~~~~~
java_msgobj.c:156:27: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:172:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:172:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:189:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:189:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:205:27: warning: passing argument 2 of ‘(*env)->SetIntField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetIntField(env, SipMsgInstance, fid, msg->parsed_orig_ruri_ok);
^~~~~~~~~~~~~~
java_msgobj.c:205:27: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:222:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:222:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:237:27: warning: passing argument 2 of ‘(*env)->SetIntField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetIntField(env, SipMsgInstance, fid, msg->add_to_branch_len);
^~~~~~~~~~~~~~
java_msgobj.c:237:27: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:251:27: warning: passing argument 2 of ‘(*env)->SetIntField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetIntField(env, SipMsgInstance, fid, msg->hash_index);
^~~~~~~~~~~~~~
java_msgobj.c:251:27: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:265:27: warning: passing argument 2 of ‘(*env)->SetIntField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetIntField(env, SipMsgInstance, fid, msg->msg_flags);
^~~~~~~~~~~~~~
java_msgobj.c:265:27: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:286:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:286:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
java_msgobj.c:306:30: warning: passing argument 2 of ‘(*env)->SetObjectField’ from incompatible pointer type [-Wincompatible-pointer-types]
(*env)->SetObjectField(env, SipMsgInstance, fid, jStrParam);
^~~~~~~~~~~~~~
java_msgobj.c:306:30: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘struct _jobject **’
CC (gcc) [M app_java.so] java_support.o
CC (gcc) [M app_java.so] java_iface.o
java_iface.c: In function ‘java_exec’:
java_iface.c:205:53: warning: passing argument 2 of ‘(*_aj_env)->NewLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
invk_method_ref = (*_aj_env)->NewLocalRef(_aj_env, invk_method);
^~~~~~~~~~~
java_iface.c:205:53: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:205:18: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
invk_method_ref = (*_aj_env)->NewLocalRef(_aj_env, invk_method);
^
java_iface.c:208:39: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, invk_method_ref);
^~~~~~~~~~~~~~~
java_iface.c:208:39: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:216:40: warning: passing argument 2 of ‘(*_aj_env)->MonitorEnter’ from incompatible pointer type [-Wincompatible-pointer-types]
if((*_aj_env)->MonitorEnter(_aj_env, invk_method_ref) != JNI_OK) {
^~~~~~~~~~~~~~~
java_iface.c:216:40: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:234:40: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, invk_method_ref);
^~~~~~~~~~~~~~~
java_iface.c:234:40: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:235:40: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, invk_method);
^~~~~~~~~~~
java_iface.c:235:40: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:258:39: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, invk_method_ref);
^~~~~~~~~~~~~~~
java_iface.c:258:39: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:259:39: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, invk_method);
^~~~~~~~~~~
java_iface.c:259:39: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:266:39: warning: passing argument 2 of ‘(*_aj_env)->MonitorExit’ from incompatible pointer type [-Wincompatible-pointer-types]
if((*_aj_env)->MonitorExit(_aj_env, invk_method_ref) != JNI_OK) {
^~~~~~~~~~~~~~~
java_iface.c:266:39: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:272:38: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, invk_method_ref);
^~~~~~~~~~~~~~~
java_iface.c:272:38: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
java_iface.c:273:38: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, invk_method);
^~~~~~~~~~~
java_iface.c:273:38: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
CC (gcc) [M app_java.so] java_native_methods.o
java_native_methods.c: In function ‘Java_org_siprouter_SipMsg_ParseSipMsg’:
java_native_methods.c:484:9: warning: return from incompatible pointer type [-Wincompatible-pointer-types]
return fill_sipmsg_object(jenv, _aj_msg);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CC (gcc) [M app_java.so] app_java_mod.o
app_java_mod.c: In function ‘child_init’:
app_java_mod.c:236:38: warning: passing argument 2 of ‘(*_aj_env)->DeleteLocalRef’ from incompatible pointer type [-Wincompatible-pointer-types]
(*_aj_env)->DeleteLocalRef(_aj_env, child_init_id);
^~~~~~~~~~~~~
app_java_mod.c:236:38: note: expected ‘jobject {aka struct _jobject *}’ but argument is of type ‘jmethodID {aka struct _jmethodID *}’
#### Reproduction
1. Download 5.2.3
2. in /usr/local/src/kamailio-5.2.3/
2.1 make include_modules="app_java" cfg
2.2 make all
2.3 make install
3 kamailo -e -E -ddd
#### Debugging Data
0(18169) ERROR: <core> [core/sr_module.c:498]: load_module(): could not open module </usr/local/lib64/kamailio/modules/app_java.so>: libjvm.so: cannot open shared object file: No such file or directory
0(18169) CRITICAL: <core> [core/cfg.y:3507]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 300, column 12-24: failed to load module
0(18169) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <app_java> found
0(18169) CRITICAL: <core> [core/cfg.y:3510]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 306, column 46: Can't set module parameter
0(18169) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <app_java> found
0(18169) CRITICAL: <core> [core/cfg.y:3510]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 307, column 55: Can't set module parameter
0(18169) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <app_java> found
0(18169) CRITICAL: <core> [core/cfg.y:3510]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 308, column 60: Can't set module parameter
0(18169) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <app_java> found
0(18169) CRITICAL: <core> [core/cfg.y:3510]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 309, column 41: Can't set module parameter
0(18169) ERROR: <core> [core/cfg.y:3370]: yyparse(): cfg. parser: failed to find command java_method_exec (params 2)
0(18169) CRITICAL: <core> [core/cfg.y:3510]: yyerror_at(): parse error in config file /usr/local/etc/kamailio/kamailio.cfg, line 483, column 37: unknown command, missing loadmodule?
### Possible Solutions
<!--
If you found a solution or workaround for the issue, describe it. Ideally, provide a pull request with a fix.
-->
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
version: kamailio 5.2.3 (x86_64/linux) c36229
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: c36229
* **Operating System**:
Ubuntu 18.04
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/1984