<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Iancu,<br>
<br>
Thank you!! You identified the problem. Turns out that I had failed
to add the IP for the OpenSIPS proxy to a firewall that was blocking
the response from this new sip server (facepalm) to the device :-(<br>
<br>
So, once I fixed the firewall I thought that would be it... Not my
luck.<br>
<br>
Now it is challenging and <i><u><b>rejecting!</b></u></i> The HA1
is failing to compare! But the passwords are correct! Now I am
really mystified.<br>
<br>
I created identical DB entries for this unit in both the original
OpenSER system and the OpenSIPS system.<br>
<br>
Registration to the OpenSER system works perfectly - HA1 validates.
When I change the sip server to the new system, to OpenSIPS system
fails due to mismatched HA1. Whaaa.... ?!?! <br>
<br>
Mismatched HA1 would imply a password failure but I have absolutely,
positively verified the passwords in both database entries and the <i><u><b>only</b></u></i>
thing I change on the device is the sip server. It should just
register on the new system. I have attached packet capture of the
transaction between the device and teh OpenSIPSs system.<br>
<br>
I have absolutely, positively copied and pasted (no trailing nl or
spaces) and verified that the passwords are the same in both
databases and also the same on the device.<br>
<br>
<table width="1624" cellspacing="0" cellpadding="0" border="0">
<colgroup><col style="mso-width-source:userset;mso-width-alt:2816;
width:58pt" width="77" span="2"> <col
style="mso-width-source:userset;mso-width-alt:2523;width:52pt"
width="69"> <col
style="mso-width-source:userset;mso-width-alt:2633;
width:54pt" width="72" span="2"> <col
style="mso-width-source:userset;mso-width-alt:2450;width:50pt"
width="67"> <col
style="mso-width-source:userset;mso-width-alt:2816;width:58pt"
width="77"> <col
style="mso-width-source:userset;mso-width-alt:3364;width:69pt"
width="92"> <col
style="mso-width-source:userset;mso-width-alt:3949;width:81pt"
width="108"> <col
style="mso-width-source:userset;mso-width-alt:4132;width:85pt"
width="113"> <col
style="mso-width-source:userset;mso-width-alt:3986;width:82pt"
width="109"> <col
style="mso-width-source:userset;mso-width-alt:987;width:20pt"
width="27"> <col
style="mso-width-source:userset;mso-width-alt:3584;width:74pt"
width="98"> <col
style="mso-width-source:userset;mso-width-alt:1938;width:40pt"
width="53"> <col
style="mso-width-source:userset;mso-width-alt:1024;width:21pt"
width="28"> <col
style="mso-width-source:userset;mso-width-alt:1280;width:26pt"
width="35"> <col
style="mso-width-source:userset;mso-width-alt:2304;width:47pt"
width="63"> <col
style="mso-width-source:userset;mso-width-alt:2194;width:45pt"
width="60"> <col
style="mso-width-source:userset;mso-width-alt:1024;width:21pt"
width="28"> <col
style="mso-width-source:userset;mso-width-alt:1426;width:29pt"
width="39"> <col
style="mso-width-source:userset;mso-width-alt:1133;width:23pt"
width="31"> <col
style="mso-width-source:userset;mso-width-alt:2669;width:55pt"
width="73"> <col
style="mso-width-source:userset;mso-width-alt:5705;width:117pt"
width="156"> </colgroup><tbody>
<tr style="height:12.75pt" height="17">
<td colspan="3" style="height:12.75pt;mso-ignore:colspan;
width:168pt" width="223" height="17">OpenSER DB subscriber
entery</td>
<td style="width:54pt" width="72"><br>
</td>
<td style="width:54pt" width="72"><br>
</td>
<td style="width:50pt" width="67"><br>
</td>
<td style="width:58pt" width="77"><br>
</td>
<td style="width:69pt" width="92"><br>
</td>
<td style="width:81pt" width="108"><br>
</td>
<td style="width:85pt" width="113"><br>
</td>
<td style="width:82pt" width="109"><br>
</td>
<td style="width:20pt" width="27"><br>
</td>
<td style="width:74pt" width="98"><br>
</td>
<td style="width:40pt" width="53"><br>
</td>
<td style="width:21pt" width="28"><br>
</td>
<td style="width:26pt" width="35"><br>
</td>
<td style="width:47pt" width="63"><br>
</td>
<td style="width:45pt" width="60"><br>
</td>
<td style="width:21pt" width="28"><br>
</td>
<td style="width:29pt" width="39"><br>
</td>
<td style="width:23pt" width="31"><br>
</td>
<td style="width:55pt" width="73"><br>
</td>
<td style="width:117pt" width="156"><br>
</td>
</tr>
<tr style="height:12.75pt" height="17">
<td style="height:12.75pt" height="17">phplib_id</td>
<td>username</td>
<td>domain</td>
<td>password</td>
<td>first_name</td>
<td>last_name</td>
<td>phone</td>
<td>email_address</td>
<td>datetime_created</td>
<td>datetime_modified</td>
<td>confirmation</td>
<td>flag</td>
<td>sendnotification</td>
<td>greeting</td>
<td>ha1</td>
<td>ha1b</td>
<td>allow_find</td>
<td>timezone</td>
<td>rpid</td>
<td>domn</td>
<td>uuid</td>
<td>customerID</td>
<td>customerName</td>
</tr>
<tr style="height:12.75pt" height="17">
<td style="height:12.75pt" height="17" align="right">3105738133</td>
<td align="right">3105738133</td>
<td>digilink.net</td>
<td>XXXXXXXX</td>
<td>PPC Home</td>
<td>Fax</td>
<td align="right">3105738133</td>
<td><br>
</td>
<td class="xl24" align="right">7/5/2012 16:36</td>
<td class="xl24" align="right">11/7/2021 13:58</td>
<td><br>
</td>
<td>o</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td align="right">0</td>
<td>\N</td>
<td>\N</td>
<td>\N</td>
<td>\N</td>
<td align="right">72</td>
<td>DigiLink Internet Services</td>
</tr>
<tr style="height:12.75pt" height="17">
<td style="height:12.75pt" height="17"><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td class="xl24"><br>
</td>
<td class="xl24"><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
</tr>
<tr style="height:12.75pt" height="17">
<td colspan="3" style="height:12.75pt;mso-ignore:colspan"
height="17">OpenSIPS DB subscriber entry</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
</tr>
<tr style="height:12.75pt" height="17">
<td style="height:12.75pt" height="17">id</td>
<td>username</td>
<td>domain</td>
<td>password</td>
<td>cr_preferred_carrier</td>
<td>first_name</td>
<td>last_name</td>
<td>phone</td>
<td>email_address</td>
<td>datetime_created</td>
<td>datetime_modified</td>
<td>confirmation</td>
<td>flag</td>
<td>sendnotification</td>
<td>greeting</td>
<td>allow_find</td>
<td>timezone</td>
<td>customerID</td>
<td>customerName</td>
<td>ha1</td>
<td>ha1_sha256</td>
<td>ha1_sha512t256</td>
<td>rpid</td>
</tr>
<tr style="height:12.75pt" height="17">
<td style="height:12.75pt" height="17" align="right">1</td>
<td align="right">3105738133</td>
<td>digidial</td>
<td>XXXXXXXX</td>
<td>\N</td>
<td>PPC Home</td>
<td>Fax</td>
<td align="right">3105738133</td>
<td><a class="moz-txt-link-abbreviated" href="mailto:bob@planeparts.com">bob@planeparts.com</a></td>
<td class="xl24" align="right">7/5/2012 16:36</td>
<td class="xl24" align="right">11/7/2021 13:58</td>
<td><br>
</td>
<td align="right">0</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td><br>
</td>
<td align="right">72</td>
<td colspan="4" style="mso-ignore:colspan">DigiLink Internet
Services</td>
<td>\N</td>
</tr>
</tbody>
</table>
<br>
<br>
Registration code:<br>
<br>
OpenSER system:<br>
<br>
<font face="monospace">modparam("auth_db", "calculate_ha1", yes)<br>
modparam("auth_db", "password_column", "password")<br>
<br>
if (method=="REGISTER") {<br>
#xlog("L_INFO","[$rm][$ft][$tt]
Processing registration");<br>
<br>
if (!www_authorize("digilink.net",
"subscriber")) {<br>
#xlog("L_INFO","[$rm][$ft][$tt]
Challenging peer");<br>
www_challenge("digilink.net", "0");<br>
exit;<br>
};<br>
<br>
xlog("L_INFO","[$rm][$ft][$tt] Registered $fu
from $si");<br>
save("location");<br>
exit;<br>
};<br>
</font><br>
==============<br>
OpenSIPS system<br>
<br>
<font face="monospace">#### AUTH Db module<br>
loadmodule "auth.so"<br>
loadmodule "auth_db.so"<br>
modparam("auth_db", "calculate_ha1", 1)<br>
modparam("auth_db", "use_domain", 1)<br>
modparam("auth_db", "user_column", "username")<br>
modparam("auth_db", "password_column", "password")<br>
modparam("auth_db", "load_credentials", "")<br>
<br>
<br>
if (is_method("REGISTER")) {<br>
xlog("L_INFO", "REGISTER: [$tu] request from [$si]");<br>
xlog("L_INFO","[$ft][$au]@[$ad] - Processing
registration");<br>
xlog("L_INFO", "REGISTER: www_authorize returned
[$var(x)] to authenticate with [$rU]$ru credential");<br>
<br>
if (!www_authorize("digilink.net", "subscriber")) {<br>
xlog("L_INFO","CHALLENGE: [$ft][$tt]");<br>
www_challenge("digilink.net","auth","MD5");<br>
exit;<br>
} else {<br>
xlog("L_ALERT", "REGISTER: URI [$tu][$rU]$ru
credential from [$si] - FAILED!");<br>
sl_send_reply(403, "Not Authorized!");<br>
exit;<br>
}<br>
<br>
xlog("L_INFO", "REGISTER: URI [$tu] - [$rm][$ft][$tt]
Registered $fu from $si");<br>
save("location");<br>
exit;<br>
}</font><br>
<br>
Debug output:<br>
<br>
<font face="monospace">Sep 7 09:42:09 [5640] DBG:core:parse_msg:
SIP Request:<br>
Sep 7 09:42:09 [5640] DBG:core:parse_msg: method:
<REGISTER><br>
Sep 7 09:42:09 [5640] DBG:core:parse_msg: uri:
<a class="moz-txt-link-rfc2396E" href="sip:sip.rs.digidial.net"><sip:sip.rs.digidial.net></a><br>
Sep 7 09:42:09 [5640] DBG:core:parse_msg: version:
<SIP/2.0><br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers:
flags=ffffffffffffffff<br>
Sep 7 09:42:09 [5640] DBG:core:parse_via_param: found param type
232, <branch> = <z9hG4bK-b316ab8b>; state=16<br>
Sep 7 09:42:09 [5640] DBG:core:parse_via: end of header reached,
state=5<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers: via found,
flags=ffffffffffffffff<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers: this is the first
via<br>
Sep 7 09:42:09 [5640] DBG:core:_parse_to: end of header reached,
state=10<br>
Sep 7 09:42:09 [5640] DBG:core:_parse_to: display={"PPC Fax"},
ruri={<a class="moz-txt-link-freetext" href="sip:3105738133@sip.rs.digidial.net">sip:3105738133@sip.rs.digidial.net</a>}<br>
Sep 7 09:42:09 [5640] DBG:core:get_hdr_field: <To> [48];
uri=[<a class="moz-txt-link-freetext" href="sip:3105738133@sip.rs.digidial.net">sip:3105738133@sip.rs.digidial.net</a>]<br>
Sep 7 09:42:09 [5640] DBG:core:get_hdr_field: to body ["PPC Fax"
<a class="moz-txt-link-rfc2396E" href="sip:3105738133@sip.rs.digidial.net"><sip:3105738133@sip.rs.digidial.net></a><br>
]<br>
Sep 7 09:42:09 [5640] DBG:core:get_hdr_field: cseq <CSeq>:
<86966> <REGISTER><br>
Sep 7 09:42:09 [5640] DBG:core:get_hdr_field: content_length=0<br>
Sep 7 09:42:09 [5640] DBG:core:get_hdr_field: found end of header<br>
Sep 7 09:42:09 [5640] DBG:core:receive_msg: After parse_msg...<br>
Sep 7 09:42:09 [5640] DBG:core:receive_msg: preparing to run
routing scripts...<br>
Sep 7 09:42:09 [5640] DBG:pike:mark_node: search on branch 205
(top=0x7f90f8b40bd8)<br>
Sep 7 09:42:09 [5640] DBG:pike:mark_node: only first 1 were
matched!<br>
Sep 7 09:42:09 [5640] DBG:pike:pike_check_req: src IP
[205.147.62.19],node=0x7f90f8b40bd8; hits=[0,3],[0,0] node_flags=2
func_flags=8<br>
Sep 7 09:42:09 [5640] DBG:maxfwd:is_maxfwd_present: value = 70<br>
Sep 7 09:42:09 [5640] DBG:core:comp_scriptvar: int 27: 833 / 2048<br>
Sep 7 09:42:09 [5640] DBG:core:parse_to_param:
tag=30079e2fdf731b79o1<br>
Sep 7 09:42:09 [5640] DBG:core:parse_to_param: end of header
reached, state=11<br>
Sep 7 09:42:09 [5640] DBG:core:_parse_to: end of header reached,
state=29<br>
Sep 7 09:42:09 [5640] DBG:core:_parse_to: display={"PPC Fax"},
ruri={<a class="moz-txt-link-freetext" href="sip:3105738133@sip.rs.digidial.net">sip:3105738133@sip.rs.digidial.net</a>}<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers: flags=78<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers: flags=200<br>
Sep 7 09:42:09 [5640] DBG:rr:find_first_route: No Route headers
found<br>
Sep 7 09:42:09 [5640] DBG:rr:loose_route: There is no Route HF<br>
... [snip]<br>
Sep 7 09:42:09 [5640] Unknown source [205.147.62.19]:
[<a class="moz-txt-link-freetext" href="sip:3105738133@sip.rs.digidial.net">sip:3105738133@sip.rs.digidial.net</a>] request<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers:
flags=ffffffffffffffff<br>
Sep 7 09:42:09 [5640] DBG:core:parse_params: Parsing params
for:[expires=300]<br>
Sep 7 09:42:09 [5640] REGISTER:
[<a class="moz-txt-link-freetext" href="sip:3105738133@sip.rs.digidial.net">sip:3105738133@sip.rs.digidial.net</a>] request from [205.147.62.19]<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers: flags=14000<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers: flags=14000<br>
Sep 7 09:42:09 [5640]
[30079e2fdf731b79o1][3105738133]@[<null>] - Processing
registration<br>
Sep 7 09:42:09 [5640] REGISTER: www_authorize returned
[<null>] to authenticate with
[<null>]<a class="moz-txt-link-freetext" href="sip:sip.rs.digidial.net">sip:sip.rs.digidial.net</a> credentialSep 7 09:42:09
[5640] DBG:auth:pre_auth: nonce index= 1<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:has_stmt_ctx: ctx found for
subscriber<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_do_prepared_query:
conn=0x7f90fa86ac90 (tail=140260655146496) MC=0x7f90fa86a698<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_do_prepared_query:
set values for the statement run<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_val2bind: added val
(0): len=10; type=254; is_null=0<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_val2bind: added val
(1): len=12; type=254; is_null=0<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_do_prepared_query:
doing BIND_PARAM in...<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:mysql_raise_event: MySQL
status has not changed: connected<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_do_prepared_query:
prepared statement has 1 columns in result<br>
Sep 7 09:42:09 [5640] DBG:core:db_new_result: allocate 48 bytes
for result set at 0x7f90fa86cb98<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_get_columns: 1
columns returned from the query<br>
Sep 7 09:42:09 [5640] DBG:core:db_allocate_columns: allocate 28
bytes for result columns at 0x7f90fa86d480<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_get_columns:
RES_NAMES(0x7f90fa86d488)[0]=[ha1]<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_get_columns: use
DB_STRING result type<br>
Sep 7 09:42:09 [5640] DBG:core:db_allocate_rows: allocate 48
bytes for result rows and values at 0x7f90fa86c170<br>
Sep 7 09:42:09 [5640] DBG:db_mysql:db_mysql_str2val: converting
STRING []<br>
Sep 7 09:42:09 [5640] DBG:auth_db:get_ha1: <u><b>HA1 string
calculated: 115137ac8cc974c418c92e51dfb4fffb</b></u><br>
Sep 7 09:42:09 [5640] DBG:auth:check_response: <b><u>our result
= '841dc25d395e34bab3c0251e200b38f9'</u></b><br>
Sep 7 09:42:09 [5640] DBG:auth:check_response: <u><b>authorization
failed</b></u><br>
Sep 7 09:42:09 [5640] DBG:core:db_free_columns: freeing result
columns at 0x7f90fa86d480<br>
Sep 7 09:42:09 [5640] DBG:core:db_free_rows: freeing 1 rows<br>
Sep 7 09:42:09 [5640] DBG:core:db_free_row: freeing row values at
0x7f90fa86c180<br>
Sep 7 09:42:09 [5640] DBG:core:db_free_rows: freeing rows at
0x7f90fa86c170<br>
Sep 7 09:42:09 [5640] DBG:core:db_free_result: freeing result set
at 0x7f90fa86cb98<br>
Sep 7 09:42:09 [5640] DBG:core:pv_get_xto_attr: no Tag parameter<br>
Sep 7 09:42:09 [5640] CHALLENGE:
[30079e2fdf731b79o1][<null>]Sep 7 09:42:09 [5640]
DBG:auth:reserve_nonce_index: second= 13, sec_monit= -1, index= 2<br>
Sep 7 09:42:09 [5640] DBG:auth:challenge: nonce index= 2<br>
Sep 7 09:42:09 [5640] DBG:auth:build_auth_hf: 'WWW-Authenticate:
Digest realm="digilink.net",
nonce="jc2ceYLP1dzX+qS8Erm1zKIihYg6b953YdAZIa38dj4A", qop="auth",
algorithm=MD5'<br>
Sep 7 09:42:09 [5640] DBG:core:MD5StringArray: MD5 calculated:
a7216245b8ac903b73694b3c3949959b<br>
Sep 7 09:42:09 [5640] DBG:core:parse_headers:
flags=ffffffffffffffff<br>
Sep 7 09:42:09 [5640] DBG:core:destroy_avp_list: destroying list
(nil)<br>
Sep 7 09:42:09 [5640] DBG:core:receive_msg: cleaning up</font><br>
<br>
<br>
<div class="moz-signature">-- <br>
<table width="569" cellspacing="0" cellpadding="2" border="0">
<tbody>
<tr valign="middle" bgcolor="#000099">
<td colspan="2"><font size="2" face="Verdana, Arial,
Helvetica, sans-serif" color="#ffffff"><strong>Bob
Atkins </strong></font><font color="#ffffff"> </font></td>
</tr>
<tr valign="middle">
<td colspan="2"><font size="1" face="Verdana, Arial,
Helvetica, sans-serif"><em>President/CEO</em></font></td>
</tr>
<tr valign="middle">
<td width="233">
<p align="center"><font size="1" face="Verdana, Arial,
Helvetica, sans-serif"><b><font color="#000080"><span
style="font-weight: bold; font-family: Trebuchet
MS;"><a href="http://www.digilink.net"><img
src="http://www.digilink.net/images/DigiLink_esig_logo.jpg"
alt="DigiLink, Inc." style="border: 0px
solid ; width: 216px; height: 48px;"></a></span></font></b><br>
<font color="#006600">Business Inter-net-working</font><br>
<font color="#000099"><strong><em>The Cure for the
Common ISP!</em></strong></font></font></p>
</td>
<td width="328">
<p align="right"><font size="1" face="Verdana, Arial,
Helvetica, sans-serif" color="#666666">Phone: </font><font
size="1" face="Verdana, Arial, Helvetica, sans-serif">(310)
577-9450<br>
</font><font size="1" face="Verdana, Arial, Helvetica,
sans-serif" color="#666666">Fax: </font><font
size="1" face="Verdana, Arial, Helvetica, sans-serif">(310)
577-3360</font><font size="1" face="Verdana, Arial,
Helvetica, sans-serif"><br>
<font color="#666666">eMail:</font> <a class="moz-txt-link-abbreviated" href="mailto:bob@digilink.net">bob@digilink.net</a><br>
</font></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
</div>
On 9/6/2022 11:16 PM, Bogdan-Andrei Iancu wrote:<br>
<blockquote type="cite"
cite="mid:7c55776f-b8be-d668-d35e-531e3619c698@opensips.org">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Hi Bob,<br>
<br>
Well, the logs cover only the challenge part, the handling of the
REGISTER without any credentials - this is the first normal step
in the digest auth process. <br>
<br>
As per log, no Auth hdrs are found in the incoming REGISTER and a
challenge reply is built and sent back (see the last log line
below):<br>
<br>
<font face="monospace">Sep 6 11:34:42 [4299]
DBG:core:pv_get_authattr: no [Proxy-]Authorization header<br>
Sep 6 11:34:42 [4299]
[e5f4a8407663e4f7a3970][<null>]@[<null>] -
Processing registrationSep 6 11:34:42 [4299]
DBG:core:parse_headers: flags=4000<br>
Sep 6 11:34:42 [4299] DBG:auth:pre_auth: credentials with given
realm not found<br>
Sep 6 11:34:42 [4299] DBG:auth:reserve_nonce_index: second= 19,
sec_monit= 22, index= 36<br>
Sep 6 11:34:42 [4299] DBG:auth:challenge: nonce index= 36<br>
Sep 6 11:34:42 [4299] DBG:auth:build_auth_hf:
'WWW-Authenticate: Digest realm="23.253.166.155",
nonce="945VEH4DrBNkbwzJOMTyiEbNih+ChrtOdEF1sn9J0QAA",
qop="auth", algorithm=MD5</font><br>
<br>
But normally it should be a second incoming REGISTER (as response
to the challenge) with credentials this time. Do you have the logs
from both REGISTER requests and eventually the SIP capture for
them?<br>
<br>
Best regards,<br>
<pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="moz-txt-link-freetext" href="https://www.opensips-solutions.com" moz-do-not-send="true">https://www.opensips-solutions.com</a>
OpenSIPS Summit 27-30 Sept 2022, Athens
<a class="moz-txt-link-freetext" href="https://www.opensips.org/events/Summit-2022Athens/" moz-do-not-send="true">https://www.opensips.org/events/Summit-2022Athens/</a></pre>
<br>
</blockquote>
<br>
</body>
</html>