kamailio.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
List overview
Download
sr-dev
August 2016
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
sr-dev@lists.kamailio.org
25 participants
197 discussions
Start a n
N
ew thread
[kamailio/kamailio] pike: fixed rpc array (#759)
by kelchy
- added array structure when returning multiple addresses instead of concatenated strings - fixed buffer overflow on incorrect buffer size allocation You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/759
-- Commit Summary -- * pike: fixed rpc array -- File Changes -- M modules/pike/pike_rpc.c (56) M modules/pike/pike_top.c (1) M modules/pike/pike_top.h (2) -- Patch Links --
https://github.com/kamailio/kamailio/pull/759.patch
https://github.com/kamailio/kamailio/pull/759.diff
-- 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/pull/759
8 years, 3 months
2
2
0
0
git:master:e349af55: dialog: refresh cseq update if it was incremented in the past
by Daniel-Constantin Mierla
Module: kamailio Branch: master Commit: e349af55168e6b4de97a36d35b475dc295edc2e2 URL:
https://github.com/kamailio/kamailio/commit/e349af55168e6b4de97a36d35b475dc…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com> Committer: Daniel-Constantin Mierla <miconda(a)gmail.com> Date: 2016-08-26T14:43:13+02:00 dialog: refresh cseq update if it was incremented in the past - reported by GH #752 --- Modified: modules/dialog/dlg_cseq.c Modified: modules/dialog/dlg_cseq.h Modified: modules/dialog/dlg_handlers.c --- Diff:
https://github.com/kamailio/kamailio/commit/e349af55168e6b4de97a36d35b475dc…
Patch:
https://github.com/kamailio/kamailio/commit/e349af55168e6b4de97a36d35b475dc…
--- diff --git a/modules/dialog/dlg_cseq.c b/modules/dialog/dlg_cseq.c index d902ae9..ad915bd 100644 --- a/modules/dialog/dlg_cseq.c +++ b/modules/dialog/dlg_cseq.c @@ -186,6 +186,61 @@ int dlg_cseq_update(sip_msg_t *msg) return -1; } + +/** + * + */ +int dlg_cseq_refresh(sip_msg_t *msg, dlg_cell_t *dlg, + unsigned int direction) +{ + str nval; + str *pval; + + if(dlg_cseq_prepare_msg(msg)!=0) { + goto error; + } + if(msg->first_line.type==SIP_REPLY) { + /* nothing to do for outgoing replies */ + goto done; + } + + LM_DBG("initiating cseq refresh\n"); + + /* supported only for downstrem direction */ + if(direction != DLG_DIR_DOWNSTREAM) { + LM_DBG("request not going downstream (%u)\n", direction); + goto done; + } + + /* take the increment value from dialog */ + if(!((dlg->iflags&DLG_IFLAG_CSEQ_DIFF)==DLG_IFLAG_CSEQ_DIFF)) { + LM_DBG("no cseq refresh required\n"); + goto done; + } + + /* get dialog variable holding cseq diff */ + pval = get_dlg_variable(dlg, &_dlg_cseq_diff_var_name); + if(pval==NULL || pval->s==NULL || pval->len<=0) { + LM_DBG("dialog marked with cseq diff but no variable set yet\n"); + goto done; + } + + nval = *pval; + trim(&nval); + + LM_DBG("adding cseq refresh header value: %.*s\n", nval.len, nval.s); + parse_headers(msg, HDR_EOH_F, 0); + sr_hdr_add_zs(msg, "P-K-CSeq-Refresh", &nval); + +done: + if(dlg!=NULL) dlg_release(dlg); + return 0; + +error: + if(dlg!=NULL) dlg_release(dlg); + return -1; +} + /** * */ @@ -319,16 +374,23 @@ int dlg_cseq_msg_sent(void *data) parse_headers(&msg, HDR_EOH_F, 0); hfk = sr_hdr_get_z(&msg, "P-K-Auth-CSeq"); if(hfk!=NULL) { - LM_DBG("uac auth request - cseq inc needed\n"); + LM_DBG("new cseq inc requested\n"); nval = hfk->body; trim(&nval); } else { - LM_DBG("uac auth request - cseq inc not needed\n"); - goto done; + LM_DBG("new cseq inc not requested\n"); } } if(nval.len<=0) { + hfk = sr_hdr_get_z(&msg, "P-K-CSeq-Refresh"); + if(hfk!=NULL) { + LM_DBG("cseq refresh requested\n"); + nval = hfk->body; + trim(&nval); + } + } + if(nval.len<=0) { goto done; } diff --git a/modules/dialog/dlg_cseq.h b/modules/dialog/dlg_cseq.h index cee9e34..a2b5e01 100644 --- a/modules/dialog/dlg_cseq.h +++ b/modules/dialog/dlg_cseq.h @@ -32,9 +32,12 @@ #define _DLG_CSEQ_H_ #include "../../parser/msg_parser.h" +#include "dlg_hash.h" int dlg_register_cseq_callbacks(void); int dlg_cseq_update(sip_msg_t *msg); +int dlg_cseq_refresh(sip_msg_t *msg, dlg_cell_t *dlg, + unsigned int direction); #endif diff --git a/modules/dialog/dlg_handlers.c b/modules/dialog/dlg_handlers.c index cb3523d..59393dc 100644 --- a/modules/dialog/dlg_handlers.c +++ b/modules/dialog/dlg_handlers.c @@ -48,6 +48,7 @@ #include "dlg_hash.h" #include "dlg_timer.h" #include "dlg_cb.h" +#include "dlg_cseq.h" #include "dlg_handlers.h" #include "dlg_req_within.h" #include "dlg_db_handler.h" @@ -1158,7 +1159,7 @@ dlg_cell_t *dlg_get_msg_dialog(sip_msg_t *msg) /*! * \brief Function that is registered as RR callback for dialog tracking - * + * * Function that is registered as RR callback for dialog tracking. It * sets the appropriate events after the SIP method and run the state * machine to update the dialog state. It updates then the saved @@ -1250,7 +1251,7 @@ void dlg_onroute(struct sip_msg* req, str *route_params, void *param) } if (dlg==0) { - if (pre_match_parse( req, &callid, &ftag, &ttag, 1)<0) + if (pre_match_parse(req, &callid, &ftag, &ttag, 1)<0) return; /* TODO - try to use the RR dir detection to speed up here the * search -bogdan */ @@ -1267,6 +1268,12 @@ void dlg_onroute(struct sip_msg* req, str *route_params, void *param) _dlg_ctx.iuid.h_entry = dlg->h_entry; _dlg_ctx.iuid.h_id = dlg->h_id; + if(dlg->iflags & DLG_IFLAG_CSEQ_DIFF) { + if(dlg_cseq_refresh(req, dlg, dir)<0) { + LM_ERR("failed to refresh cseq update\n"); + } + } + if (req->first_line.u.request.method_value != METHOD_ACK) { iuid = dlg_get_iuid_shm_clone(dlg); if(iuid!=NULL)
8 years, 3 months
1
0
0
0
git:master:59b11ba8: sipcapture: fix compile warning of testing unsigned int for <0
by Daniel-Constantin Mierla
Module: kamailio Branch: master Commit: 59b11ba80591beaf2ec92cd3ad6400b3afbb35f2 URL:
https://github.com/kamailio/kamailio/commit/59b11ba80591beaf2ec92cd3ad6400b…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com> Committer: Daniel-Constantin Mierla <miconda(a)gmail.com> Date: 2016-08-26T13:43:47+02:00 sipcapture: fix compile warning of testing unsigned int for <0 --- Modified: modules/sipcapture/sipcapture.c --- Diff:
https://github.com/kamailio/kamailio/commit/59b11ba80591beaf2ec92cd3ad6400b…
Patch:
https://github.com/kamailio/kamailio/commit/59b11ba80591beaf2ec92cd3ad6400b…
--- diff --git a/modules/sipcapture/sipcapture.c b/modules/sipcapture/sipcapture.c index 47e193c..33c96cd 100644 --- a/modules/sipcapture/sipcapture.c +++ b/modules/sipcapture/sipcapture.c @@ -2669,7 +2669,7 @@ static int nosip_hep_msg(void *data) { sip_msg_t* msg; char *buf; - unsigned int len = 0; + int len = 0; struct run_act_ctx ra_ctx; int ret = 0;
8 years, 3 months
1
0
0
0
git:master:30b5ac9b: app_lua: add NULL for new required parameter of sdpops api
by Daniel-Constantin Mierla
Module: kamailio Branch: master Commit: 30b5ac9bf9d3e74b0c13a3d0c3ad5e441aa91fa9 URL:
https://github.com/kamailio/kamailio/commit/30b5ac9bf9d3e74b0c13a3d0c3ad5e4…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com> Committer: Daniel-Constantin Mierla <miconda(a)gmail.com> Date: 2016-08-26T13:40:31+02:00 app_lua: add NULL for new required parameter of sdpops api --- Modified: modules/app_lua/app_lua_exp.c --- Diff:
https://github.com/kamailio/kamailio/commit/30b5ac9bf9d3e74b0c13a3d0c3ad5e4…
Patch:
https://github.com/kamailio/kamailio/commit/30b5ac9bf9d3e74b0c13a3d0c3ad5e4…
--- diff --git a/modules/app_lua/app_lua_exp.c b/modules/app_lua/app_lua_exp.c index 0fb7446..df88648 100644 --- a/modules/app_lua/app_lua_exp.c +++ b/modules/app_lua/app_lua_exp.c @@ -2220,7 +2220,7 @@ static int lua_sr_sdpops_remove_codecs_by_id(lua_State *L) codecs.s = (char*)lua_tostring(L, -1); codecs.len = strlen(codecs.s); - ret = _lua_sdpopsb.sdp_remove_codecs_by_id(env_L->msg, &codecs); + ret = _lua_sdpopsb.sdp_remove_codecs_by_id(env_L->msg, &codecs, NULL); return app_lua_return_int(L, ret); } @@ -2257,7 +2257,7 @@ static int lua_sr_sdpops_remove_codecs_by_name(lua_State *L) codecs.s = (char*)lua_tostring(L, -1); codecs.len = strlen(codecs.s); - ret = _lua_sdpopsb.sdp_remove_codecs_by_name(env_L->msg, &codecs); + ret = _lua_sdpopsb.sdp_remove_codecs_by_name(env_L->msg, &codecs, NULL); return app_lua_return_int(L, ret); }
8 years, 3 months
1
0
0
0
git:master:9cfe2119: sdpops: fixed the api definitions after new params by commit 5fffc9bd84ea
by Daniel-Constantin Mierla
Module: kamailio Branch: master Commit: 9cfe2119306ea70875d448beebbdb9fede0b32af URL:
https://github.com/kamailio/kamailio/commit/9cfe2119306ea70875d448beebbdb9f…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com> Committer: Daniel-Constantin Mierla <miconda(a)gmail.com> Date: 2016-08-26T13:39:27+02:00 sdpops: fixed the api definitions after new params by commit 5fffc9bd84ea --- Modified: modules/sdpops/api.h --- Diff:
https://github.com/kamailio/kamailio/commit/9cfe2119306ea70875d448beebbdb9f…
Patch:
https://github.com/kamailio/kamailio/commit/9cfe2119306ea70875d448beebbdb9f…
--- diff --git a/modules/sdpops/api.h b/modules/sdpops/api.h index 0528d3f..eba0c65 100644 --- a/modules/sdpops/api.h +++ b/modules/sdpops/api.h @@ -28,6 +28,7 @@ typedef int (*sdp_with_transport_t)(struct sip_msg*, str*, int); typedef int (*sdp_with_ice_t)(struct sip_msg*); typedef int (*sdp_keep_media_t)(struct sip_msg*, str*, str*); typedef int (*sdp_remove_media_t)(struct sip_msg*, str*); +typedef int (*sdp_remove_media_type_t)(struct sip_msg*, str*, str*); typedef struct sdpops_binds { sdp_with_media_t sdp_with_media; @@ -41,8 +42,8 @@ typedef struct sdpops_binds { sdp_remove_media_t sdp_remove_media; sdp_remove_media_t sdp_remove_transport; sdp_remove_media_t sdp_remove_line_by_prefix; - sdp_remove_media_t sdp_remove_codecs_by_id; - sdp_remove_media_t sdp_remove_codecs_by_name; + sdp_remove_media_type_t sdp_remove_codecs_by_id; + sdp_remove_media_type_t sdp_remove_codecs_by_name; } sdpops_api_t; typedef int (*bind_sdpops_f)(sdpops_api_t*);
8 years, 3 months
1
0
0
0
git:master:9721f555: Merge pull request #757 from adubovikov/master
by GitHub
Module: kamailio Branch: master Commit: 9721f55598406b1fb385cc5825af3bc10ddd332f URL:
https://github.com/kamailio/kamailio/commit/9721f55598406b1fb385cc5825af3bc…
Author: Alexandr Dubovikov <alexandr.dubovikov(a)gmail.com> Committer: GitHub <noreply(a)github.com> Date: 2016-08-26T12:45:08+02:00 Merge pull request #757 from adubovikov/master modules/sipcapture: extended X-RTP-Stat types --- Modified: modules/sipcapture/sipcapture.c --- Diff:
https://github.com/kamailio/kamailio/commit/9721f55598406b1fb385cc5825af3bc…
Patch:
https://github.com/kamailio/kamailio/commit/9721f55598406b1fb385cc5825af3bc…
--- diff --git a/modules/sipcapture/sipcapture.c b/modules/sipcapture/sipcapture.c index ddce49c..47e193c 100644 --- a/modules/sipcapture/sipcapture.c +++ b/modules/sipcapture/sipcapture.c @@ -1860,7 +1860,14 @@ static int sip_capture(struct sip_msg *msg, str *_table, _capture_mode_data_t * else if((tmphdr[3] = get_hdr_by_name(msg,"RTP-RxStat", 10)) != NULL) { sco.rtp_stat = tmphdr[3]->body; } - + /* X-RTP-Stat-Add */ + else if((tmphdr[3] = get_hdr_by_name(msg,"X-RTP-Stat-Add", 14)) != NULL) { + sco.rtp_stat = tmphdr[3]->body; + } + /* X-RTP-Stat-T38 */ + else if((tmphdr[3] = get_hdr_by_name(msg,"X-RTP-Stat-T38", 14)) != NULL) { + sco.rtp_stat = tmphdr[3]->body; + } else { EMPTY_STR(sco.rtp_stat); }
8 years, 3 months
1
0
0
0
git:master:d26e99aa: modules/sipcapture: extended X-RTP-Stat types
by GitHub
Module: kamailio Branch: master Commit: d26e99aaecff3e9654a4a1e4e641e1678d078330 URL:
https://github.com/kamailio/kamailio/commit/d26e99aaecff3e9654a4a1e4e641e16…
Author: Alexandr Dubovikov <alexandr.dubovikov(a)gmail.com> Committer: GitHub <noreply(a)github.com> Date: 2016-08-26T12:42:41+02:00 modules/sipcapture: extended X-RTP-Stat types added X-RTP-Stat-T38 and X-RTP-Stat-Add. --- Modified: modules/sipcapture/sipcapture.c --- Diff:
https://github.com/kamailio/kamailio/commit/d26e99aaecff3e9654a4a1e4e641e16…
Patch:
https://github.com/kamailio/kamailio/commit/d26e99aaecff3e9654a4a1e4e641e16…
--- diff --git a/modules/sipcapture/sipcapture.c b/modules/sipcapture/sipcapture.c index ddce49c..47e193c 100644 --- a/modules/sipcapture/sipcapture.c +++ b/modules/sipcapture/sipcapture.c @@ -1860,7 +1860,14 @@ static int sip_capture(struct sip_msg *msg, str *_table, _capture_mode_data_t * else if((tmphdr[3] = get_hdr_by_name(msg,"RTP-RxStat", 10)) != NULL) { sco.rtp_stat = tmphdr[3]->body; } - + /* X-RTP-Stat-Add */ + else if((tmphdr[3] = get_hdr_by_name(msg,"X-RTP-Stat-Add", 14)) != NULL) { + sco.rtp_stat = tmphdr[3]->body; + } + /* X-RTP-Stat-T38 */ + else if((tmphdr[3] = get_hdr_by_name(msg,"X-RTP-Stat-T38", 14)) != NULL) { + sco.rtp_stat = tmphdr[3]->body; + } else { EMPTY_STR(sco.rtp_stat); }
8 years, 3 months
1
0
0
0
[kamailio/kamailio] modules/sipcapture: extended X-RTP-Stat types (#757)
by Alexandr Dubovikov
added X-RTP-Stat-T38 and X-RTP-Stat-Add. You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/757
-- Commit Summary -- * modules/sipcapture: extended X-RTP-Stat types -- File Changes -- M modules/sipcapture/sipcapture.c (9) -- Patch Links --
https://github.com/kamailio/kamailio/pull/757.patch
https://github.com/kamailio/kamailio/pull/757.diff
-- 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/pull/757
8 years, 3 months
1
1
0
0
git:master:649e3452: sdpops: Added missing definitions from our private repo
by Carsten Bock
Module: kamailio Branch: master Commit: 649e3452a61b3934a3d687c31559643309ef9ca3 URL:
https://github.com/kamailio/kamailio/commit/649e3452a61b3934a3d687c31559643…
Author: Carsten Bock <carsten(a)ng-voice.com> Committer: Carsten Bock <carsten(a)ng-voice.com> Date: 2016-08-26T12:01:09+02:00 sdpops: Added missing definitions from our private repo --- Modified: modules/sdpops/sdpops_mod.c --- Diff:
https://github.com/kamailio/kamailio/commit/649e3452a61b3934a3d687c31559643…
Patch:
https://github.com/kamailio/kamailio/commit/649e3452a61b3934a3d687c31559643…
--- diff --git a/modules/sdpops/sdpops_mod.c b/modules/sdpops/sdpops_mod.c index 0e2700d..5813e29 100644 --- a/modules/sdpops/sdpops_mod.c +++ b/modules/sdpops/sdpops_mod.c @@ -515,6 +515,7 @@ static int w_sdp_remove_line_by_prefix(sip_msg_t* msg, char* prefix, char* bar) static int w_sdp_remove_codecs_by_id(sip_msg_t* msg, char* codecs, char* media) { str lcodecs = {0, 0}; + str lmedia = {0, 0}; if(codecs==0) { @@ -1837,12 +1838,12 @@ static int pv_parse_sdp_name(pv_spec_p sp, str *in) static sr_kemi_t sr_kemi_sdpops_exports[] = { { str_init("sdpops"), str_init("remove_codecs_by_name"), SR_KEMIP_INT, sdp_remove_codecs_by_name, - { SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE, + { SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } }, { str_init("sdpops"), str_init("remove_codecs_by_id"), SR_KEMIP_INT, sdp_remove_codecs_by_id, - { SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE, + { SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } }, { str_init("sdpops"), str_init("keep_codecs_by_name"),
8 years, 3 months
1
0
0
0
Still Failing: kamailio/kamailio#2845 (master - 09232b9)
by Travis CI
Build Update for kamailio/kamailio ------------------------------------- Build: #2845 Status: Still Failing Duration: 4 minutes and 41 seconds Commit: 09232b9 (master) Author: Kamailio Dev Message: modules: readme files regenerated - sdpops ... View the changeset:
https://github.com/kamailio/kamailio/compare/ce900ff7bde5...09232b92f960
View the full build log and details:
https://travis-ci.org/kamailio/kamailio/builds/155292804
-- You can configure recipients for build notifications in your .travis.yml file. See
https://docs.travis-ci.com/user/notifications
8 years, 3 months
1
0
0
0
← Newer
1
...
7
8
9
10
11
12
13
...
20
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Results per page:
10
25
50
100
200