No subject
Wed Jan 27 21:05:54 CET 2016
be done in 2.1 version.
Is it possible to change in asynchronous mode in 1.11 version?
If not, is there a way to achieve asynchronous REST calls for the version o=
f opensips what we are using?
Also I see from documentation,
The following functions may also be called asynchronously:
* avp_db_query<http://www.opensips.org/html/docs/modules/2.1.x/avpops.h=
tml#id294986>
* rest_get<http://www.opensips.org/html/docs/modules/2.1.x/rest_client.=
html#id293741>
* rest_post<http://www.opensips.org/html/docs/modules/2.1.x/rest_client=
.html#id293886>
* exec<http://www.opensips.org/html/docs/modules/2.1.x/exec#id294052>
Can rest_put can also be called asynchronously if we use 2.1 version ?
Please clarify.
Regards,
Agalya
_______________________________________________
Users mailing list
Users at lists.opensips.org<mailto:Users at lists.opensips.org>
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
--_000_0d741665da5047d68756f1f31c95e156COPDCEX28cablecomcastco_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
{font-family:"Trebuchet MS \,sans-serif";
panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
color:black;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New",serif;
color:black;}
tt
{mso-style-priority:99;
font-family:"Courier New",serif;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;
color:black;}
span.EmailStyle21
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle22
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:#1F497D;}
span.EmailStyle23
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle24
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:#1F497D;}
span.EmailStyle25
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:920869609;
mso-list-template-ids:-1225891966;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New",serif;
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:1801148099;
mso-list-template-ids:1943043298;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-US" link=3D"#0563C1" vlink=3D"#954F72">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"color:blue">Hi, <o:p></o:p></span></p=
>
<p class=3D"MsoNormal"><span style=3D"color:blue"><o:p> </o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Am getting the below erro=
r if I enable debug logs.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Seems, w_async_rest_put f=
unction is called and after that it didn’t process the async(rest_put=
)).<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Do we need to configure a=
nything specific when async() is called in config file?<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:49:52 DBG:tm:_re=
ply_light: finished<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:49:52 DBG:rest_c=
lient:w_async_rest_put: async rest put 'http://***URL***?' 0x7f3df7848538 0=
x7f3df78485d0 0x7f3df7848650<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:50:12 DBG:rest_c=
lient:start_async_http_req: done, no need for async!<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:50:12 DBG:rest_c=
lient:set_output_pv_params: Last response code: 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:50:12 DBG:core:f=
m_free: free(0) called<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:50:12 DBG:core:c=
omp_scriptvar: int 26 : -4 / 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:50:12 Return cod=
e is -4<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red">Aug 11 19:50:12 Error code=
0 in HTTP PUT!<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:red"><o:p> </o:p></span></=
p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Regards,<o:p></o:p></span=
></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Agalya<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"color:windowtext">From:</span></b>=
<span style=3D"color:windowtext"> Ramachandran, Agalya (Contractor)
<br>
<b>Sent:</b> Tuesday, August 09, 2016 3:47 PM<br>
<b>To:</b> users at lists.opensips.org<br>
<b>Subject:</b> RE: [OpenSIPS-Users] Asynchronous operation for REST querie=
s<o:p></o:p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Hi Liviu,<o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">I have downloaded 2.1.=
4 version if opensips and trying to use rest_put call in async mode.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">I have added the neces=
sary code for rest_put () similar to rest_post() in rest_methods.c, rest_me=
thods.h and rest_client.c
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">If I just call, rest_p=
ut from config file, without async it works fine. I could see rest_put() is=
called and do the necessary steps.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">And am trying to call =
async from config file as,
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"> async(rest_put(&=
quot;<a href=3D"http://***url***%20">http://***url***
</a>", "$fU,$tU,$ci ", "application/json", "$=
var(body)", "$var(ct)", "$var(rcode)"),resume_put)=
;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">But I never see rest_p=
ut() is called. Rather am getting below error continuously.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Aug 9 17:27:47 s=
turn-test /usr/local/sbin/opensips[18525]: WARNING:core:handle_timer_job: u=
timer job <tm-utimer> has a 403840000 us delay in execution<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Aug 9 17:27:47 s=
turn-test /usr/local/sbin/opensips[18525]: WARNING:core:handle_timer_job: u=
timer job <tm-utimer> has a 403840000 us delay in execution<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Aug 9 17:27:47 s=
turn-test /usr/local/sbin/opensips[18525]: WARNING:core:handle_timer_job: u=
timer job <tm-utimer> has a 403840000 us delay in execution<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Aug 9 17:27:47 s=
turn-test /usr/local/sbin/opensips[18525]: WARNING:core:handle_timer_job: u=
timer job <tm-utimer> has a 403840000 us delay in execution<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Am I missing something=
here? I am sure it is a small thing. Do we need to do anything else before=
calling async in the script?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Regards,<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Agalya<o:p></o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p> </o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"color:windowtext">From:</span></b>=
<span style=3D"color:windowtext">
<a href=3D"mailto:users-bounces at lists.opensips.org">users-bounces at lists.ope=
nsips.org</a> [<a href=3D"mailto:users-bounces at lists.opensips.org">mailto:u=
sers-bounces at lists.opensips.org</a>]
<b>On Behalf Of </b>Liviu Chircu<br>
<b>Sent:</b> Friday, August 05, 2016 4:47 AM<br>
<b>To:</b> <a href=3D"mailto:users at lists.opensips.org">users at lists.opensips=
.org</a><br>
<b>Subject:</b> Re: [OpenSIPS-Users] Asynchronous operation for REST querie=
s<o:p></o:p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><tt><span style=3D"fo=
nt-size:10.0pt">Hi Agalya,</span></tt><span style=3D"font-size:10.0pt;font-=
family:"Courier New",serif"><br>
<br>
<tt>1.11 has no async support at core level. If you need that, you will hav=
e to use 2.1+</tt><br>
<br>
<tt>Async rest_put() is currently not implemented, but its logic would be f=
airly similar to the GET and POST counterparts.</tt></span><span style=3D"f=
ont-size:12.0pt"><o:p></o:p></span></p>
<pre>Liviu Chircu<o:p></o:p></pre>
<pre>OpenSIPS Developer<o:p></o:p></pre>
<pre><a href=3D"http://www.opensips-solutions.com">http://www.opensips-solu=
tions.com</a><o:p></o:p></pre>
<div>
<p class=3D"MsoNormal">On 04.08.2016 23:14, Ramachandran, Agalya (Contracto=
r) wrote:<o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><span style=3D"color:blue">Hi team,</span><o:p></o:p=
></p>
<p class=3D"MsoNormal"><span style=3D"color:blue"> </span><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><span style=3D"color:blue">We are using opensips1.11=
.3 version for our project.
</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">I have a question here. R=
ight now we are using a REST API call from config file for our project requ=
irement and it is in synchronous mode currently.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">From the opensips documen=
t, I see asynchronous support at script level can be done in 2.1 version.</=
span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Is it possible to change =
in asynchronous mode in 1.11 version?</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">If not, is there a way to=
achieve asynchronous REST calls for the version of opensips what we are us=
ing?
</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:blue"> </span><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Also I see from documenta=
tion,</span><o:p></o:p></p>
<p style=3D"margin:0in;margin-bottom:.0001pt;line-height:16.2pt;background:=
white"><span style=3D"font-size:10.0pt">The following functions may also be=
called asynchronously:</span><o:p></o:p></p>
<ul type=3D"disc">
<li class=3D"MsoNormal" style=3D"color:#666666;mso-margin-top-alt:auto;mso-=
margin-bottom-alt:auto;line-height:16.2pt;mso-list:l0 level1 lfo3;backgroun=
d:white">
<span style=3D"font-size:10.0pt;font-family:"Trebuchet MS ,sans-serif&=
quot;,serif"><a href=3D"http://www.opensips.org/html/docs/modules/2.1.x/avp=
ops.html#id294986"><b><span style=3D"color:#185662;text-decoration:none">av=
p_db_query</span></b></a></span><o:p></o:p></li><li class=3D"MsoNormal" sty=
le=3D"color:#666666;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line=
-height:16.2pt;mso-list:l0 level1 lfo3;background:white">
<span style=3D"font-size:10.0pt;font-family:"Trebuchet MS ,sans-serif&=
quot;,serif"><a href=3D"http://www.opensips.org/html/docs/modules/2.1.x/res=
t_client.html#id293741"><b><span style=3D"color:#185662;text-decoration:non=
e">rest_get</span></b></a></span><o:p></o:p></li><li class=3D"MsoNormal" st=
yle=3D"color:#666666;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;lin=
e-height:16.2pt;mso-list:l0 level1 lfo3;background:white">
<span style=3D"font-size:10.0pt;font-family:"Trebuchet MS ,sans-serif&=
quot;,serif"><a href=3D"http://www.opensips.org/html/docs/modules/2.1.x/res=
t_client.html#id293886"><b><span style=3D"color:#185662;text-decoration:non=
e">rest_post</span></b></a></span><o:p></o:p></li><li class=3D"MsoNormal" s=
tyle=3D"color:#666666;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;li=
ne-height:16.2pt;mso-list:l0 level1 lfo3;background:white">
<span style=3D"font-size:10.0pt;font-family:"Trebuchet MS ,sans-serif&=
quot;,serif"><a href=3D"http://www.opensips.org/html/docs/modules/2.1.x/exe=
c#id294052"><b><span style=3D"color:#185662;text-decoration:none">exec</spa=
n></b></a></span><o:p></o:p></li></ul>
<p class=3D"MsoNormal"><span style=3D"color:blue">Can rest_put can also be =
called asynchronously if we use 2.1 version ?
</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Please clarify.</span><o:=
p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"color:blue"> </span><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Regards,</span><o:p></o:p=
></p>
<p class=3D"MsoNormal"><span style=3D"color:blue">Agalya</span><o:p></o:p><=
/p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><span style=3D"font-s=
ize:12.0pt;font-family:"Times New Roman",serif"><br>
<br>
<o:p></o:p></span></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Users mailing list<o:p></o:p></pre>
<pre><a href=3D"mailto:Users at lists.opensips.org">Users at lists.opensips.org</=
a><o:p></o:p></pre>
<pre><a href=3D"http://lists.opensips.org/cgi-bin/mailman/listinfo/users">h=
ttp://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><o:p></o:p></pre=
>
</blockquote>
<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;font-family:"Ti=
mes New Roman",serif"><o:p> </o:p></span></p>
</div>
</body>
</html>
--_000_0d741665da5047d68756f1f31c95e156COPDCEX28cablecomcastco_--
More information about the Users
mailing list