>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 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
Running `5.7.1:441300`, trying to loop through the results of an `HGETALL` operation in Redis:
```
127.0.0.1:6379[1]> keys *
1) "customer_params:14045551212:1.1.1.1"
127.0.0.1:6379[1]> hgetall customer_params:14045551212:1.1.1.1
1) "auth_ha1"
2) "9febe8cf72c6bd063b8978cded892e4bb"
```
This means that the returned type will be `$redisd(rpl_arr)` and a loop is required. For any given key value `$redis(r=>value[x])`, the value is in the next array slot, at `$redis(r=>value[x + 1])`.
With that in mind, I tried this loop:
```
$var(i) = 0;
while($var(i) < $redis(r=>size)) {
$var(key) = $redis(r=>value[$var(i)]);
switch($var(key)) {
case "auth_ha1":
$var(auth_ha1) = $redis(r=>value[$var(i)+1]);
break;
}
$var(i) = $var(i) + 1;
}
```
However, this ends up storing the key value ("auth_ha1") in `$var(auth_ha1)`. I also tried `$(var(i){s.int}) + 1` for the subscript value.
To get the actual next-slot value, the expression evaluation has to be externalised into an intermediate variable:
```
while($var(i) < $redis(r=>size)) {
$var(key) = $redis(r=>value[$var(i)]);
# For some reason, Kamailio cannot evaluate an addition expression inside this subscript: $redis(r=>value[EXPR])
$var(idx) = $var(i) + 1;
switch($var(key)) {
case "auth_ha1":
$var(auth_ha1) = $redis(r=>value[$var(idx)]);
break;
}
$var(i) = $var(i) + 1;
}
```
This works, and yields `9febe8cf72c6bd063b8978cded892e4bb`.
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3526
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3526(a)github.com>
**crypto_uuid.c**
```
CC (gcc) [M crypto.so] api.o
CC (gcc) [M crypto.so] crypto_aes.o
CC (gcc) [M crypto.so] crypto_evcb.o
CC (gcc) [M crypto.so] crypto_mod.o
CC (gcc) [M crypto.so] crypto_uuid.o
crypto_uuid.c: In function 'crypto_generate_callid':
crypto_uuid.c:184:9: warning: 'SHA1_Init' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
184 | SHA1_Init(&crypto_ctx);
| ^~~~~~~~~
In file included from crypto_uuid.c:37:
/usr/include/openssl/sha.h:49:27: note: declared here
49 | OSSL_DEPRECATEDIN_3_0 int SHA1_Init(SHA_CTX *c);
| ^~~~~~~~~
crypto_uuid.c:185:9: warning: 'SHA1_Update' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
185 | SHA1_Update(&crypto_ctx, crypto_callid_seed, SEED_LEN);
| ^~~~~~~~~~~
In file included from crypto_uuid.c:37:
/usr/include/openssl/sha.h:50:27: note: declared here
50 | OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
| ^~~~~~~~~~~
crypto_uuid.c:186:9: warning: 'SHA1_Update' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
186 | SHA1_Update(&crypto_ctx, crypto_callid_counter, CTR_LEN);
| ^~~~~~~~~~~
In file included from crypto_uuid.c:37:
/usr/include/openssl/sha.h:50:27: note: declared here
50 | OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
| ^~~~~~~~~~~
crypto_uuid.c:187:9: warning: 'SHA1_Final' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
187 | SHA1_Final(crypto_buf, &crypto_ctx);
| ^~~~~~~~~~
In file included from crypto_uuid.c:37:
/usr/include/openssl/sha.h:51:27: note: declared here
51 | OSSL_DEPRECATEDIN_3_0 int SHA1_Final(unsigned char *md, SHA_CTX *c);
| ^~~~~~~~~~
LD (gcc) [M crypto.so] crypto.so
CC (gcc) [M tls.so] tls_bio.o
```
**auth_crypt.c**
```
CC (gcc) [M tls.so] tls_verify.o
LD (gcc) [M tls.so] tls.so
CC (gcc) [M auth_identity.so] auth_crypt.o
auth_crypt.c: In function 'rsa_sha1_enc':
auth_crypt.c:214:9: warning: 'RSA_sign' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
214 | if(RSA_sign(NID_sha1, sstrcrypted, sizeof sstrcrypted,
| ^~
In file included from /usr/include/openssl/x509.h:36,
from /usr/include/openssl/pem.h:23,
from auth_crypt.c:33:
/usr/include/openssl/rsa.h:356:27: note: declared here
356 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m,
| ^~~~~~~~
auth_crypt.c: In function 'rsa_sha1_dec':
auth_crypt.c:258:9: warning: 'EVP_PKEY_get1_RSA' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
258 | hpubkey = EVP_PKEY_get1_RSA(pkey);
| ^~~~~~~
In file included from /usr/include/openssl/pem.h:22,
from auth_crypt.c:33:
/usr/include/openssl/evp.h:1359:16: note: declared here
1359 | struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
| ^~~~~~~~~~~~~~~~~
auth_crypt.c:266:9: warning: 'RSA_verify' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
266 | if(RSA_verify(NID_sha1, (unsigned char *)ssha, sshasize,
| ^~
In file included from /usr/include/openssl/x509.h:36,
from /usr/include/openssl/pem.h:23,
from auth_crypt.c:33:
/usr/include/openssl/rsa.h:359:27: note: declared here
359 | OSSL_DEPRECATEDIN_3_0 int RSA_verify(int type, const unsigned char *m,
| ^~~~~~~~~~
auth_crypt.c:273:17: warning: 'RSA_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
273 | RSA_free(hpubkey);
| ^~~~~~~~
In file included from /usr/include/openssl/x509.h:36,
from /usr/include/openssl/pem.h:23,
from auth_crypt.c:33:
/usr/include/openssl/rsa.h:301:28: note: declared here
301 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
| ^~~~~~~~
auth_crypt.c:298:9: warning: 'RSA_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
298 | RSA_free(hpubkey);
| ^~~~~~~~
In file included from /usr/include/openssl/x509.h:36,
from /usr/include/openssl/pem.h:23,
from auth_crypt.c:33:
/usr/include/openssl/rsa.h:301:28: note: declared here
301 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
| ^~~~~~~~
CC (gcc) [M auth_identity.so] auth_dynstr.o
CC (gcc) [M auth_identity.so] auth_hdrs.o
```
**auth_identity.c**
```
CC (gcc) [M auth_identity.so] auth_http.o
CC (gcc) [M auth_identity.so] auth_identity.o
auth_identity.c: In function 'mod_init':
auth_identity.c:414:9: warning: 'PEM_read_RSAPrivateKey' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
414 | glb_hmyprivkey = PEM_read_RSAPrivateKey(hpemfile, NULL, NULL, NULL);
| ^~~~~~~~~~~~~~
In file included from auth_identity.c:43:
/usr/include/openssl/pem.h:447:1: note: declared here
447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
| ^~~~~~~~~~~~~~~~~~~~~~
auth_identity.c:425:9: warning: 'RSA_size' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
425 | if(initdynstr(&glb_encedmsg, RSA_size(glb_hmyprivkey)))
| ^~
In file included from /usr/include/openssl/x509.h:36,
from /usr/include/openssl/pem.h:23,
from auth_identity.c:43:
/usr/include/openssl/rsa.h:212:27: note: declared here
212 | OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa);
| ^~~~~~~~
auth_identity.c:429:9: warning: 'RSA_size' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
429 | if(initdynstr(&glb_b64encedmsg, (RSA_size(glb_hmyprivkey) / 3 + 1) * 4))
| ^~
In file included from /usr/include/openssl/x509.h:36,
from /usr/include/openssl/pem.h:23,
from auth_identity.c:43:
/usr/include/openssl/rsa.h:212:27: note: declared here
212 | OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa);
| ^~~~~~~~
CC (gcc) [M auth_identity.so] auth_tables.o
LD (gcc) [M auth_identity.so] auth_identity.so
```
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3502
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3502(a)github.com>
>From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1000134:
```
Source: kamailio
Severity: important
User: matthew-pcredep(a)debian.org
Usertags: obsolete-pcre3
Dear maintainer,
Your package still depends on the old, obsolete PCRE3[0] libraries
(i.e. libpcre3-dev). This has been end of life for a while now, and
upstream do not intend to fix any further bugs in it. Accordingly, I
would like to remove the pcre3 libraries from Debian, preferably in
time for the release of Bookworm.
The newer PCRE2 library was first released in 2015, and has been in
Debian since stretch. Upstream's documentation for PCRE2 is available
here: https://pcre.org/current/doc/html/
Many large projects that use PCRE have made the switch now (e.g. git,
php); it does involve some work, but we are now at the stage where
PCRE3 should not be used, particularly if it might ever be exposed to
untrusted input.
This mass bug filing was discussed on debian-devel@ in
https://lists.debian.org/debian-devel/2021/11/msg00176.html
Regards,
Matthew [0] Historical reasons mean that old PCRE is packaged as
pcre3 in Debian
```
--
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/2946
The local-request event route is not documented. When using our friend google I find an old blog post by @miconda but not much else. I can come up with some good text, but need to know what can be done in the route, like
- modify request uri
- add/remove headers
- drop request
- add/modify destination uri ($du)
--
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/980
- update weighted/relative weighted algos to use probability based sort
- calls from 0-99 now follow the weighted distributions
- removed the now unused shuffle_uint100array() function
#### 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
- [ 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:
- [ ] PR should be backported to stable branches
- [ ] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
The previous random sort for weights in a dispatcher set distributed correctly only after a minimum of n=100 calls.
This PR fixes the sort algorithm to distribute calls based on those weights, even for n<100 calls.
The real benefit here is customers can see the weighted distribution occur sooner now, when testing.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3531
-- Commit Summary --
* dispatcher: fix weighted sort for n<100 calls
-- File Changes --
M src/modules/dispatcher/dispatch.c (313)
M src/modules/dispatcher/doc/dispatcher.xml (9)
M src/modules/dispatcher/doc/dispatcher_admin.xml (20)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3531.patchhttps://github.com/kamailio/kamailio/pull/3531.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3531
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3531(a)github.com>