[sr-dev] git:master: mqueue: return false if queue is empty
Elena-Ramona Modroiu
ramona at asipto.com
Mon Oct 11 13:23:33 CEST 2010
On 10/11/2010 12:28 PM, Alex Balashov wrote:
> Can this be backported into the 3.1.0 branch? Or is that not the
> usual custom? It would be very inconvenient to apply this patch to
> every new installation, but now that I am using it it is important. :-)
It will be backported, just let me know if it works ok now.
Regards,
Ramona
>
> On 10/11/2010 06:21 AM, Elena-Ramona Modroiu wrote:
>
>> Module: sip-router
>> Branch: master
>> Commit: e6fa8ae004f5d487e1c64471bf282931e4b9e901
>> URL:
>> http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=e6fa8ae004f5d487e1c64471bf282931e4b9e901
>>
>>
>> Author: Elena-Ramona Modroiu<ramona at asipto.com>
>> Committer: Elena-Ramona Modroiu<ramona at asipto.com>
>> Date: Mon Oct 11 12:20:24 2010 +0200
>>
>> mqueue: return false if queue is empty
>>
>> - return code -2
>> - reported by Alex Balashov
>>
>> ---
>>
>> modules/mqueue/README | 11 +++++++----
>> modules/mqueue/doc/mqueue_admin.xml | 8 ++++++--
>> modules/mqueue/mqueue_api.c | 22 +++++++++++++---------
>> modules/mqueue/mqueue_mod.c | 7 +++++--
>> 4 files changed, 31 insertions(+), 17 deletions(-)
>>
>> diff --git a/modules/mqueue/README b/modules/mqueue/README
>> index 4c439a4..f876b2a 100644
>> --- a/modules/mqueue/README
>> +++ b/modules/mqueue/README
>> @@ -10,7 +10,7 @@ Elena-Ramona Modroiu
>>
>> <ramona at asipto.com>
>>
>> - Copyright � 2010 Elena-Ramona Modroiu (asipto.com)
>> + Copyright © 2010 Elena-Ramona Modroiu (asipto.com)
>>
>> __________________________________________________________________
>>
>> Table of Contents
>> @@ -94,7 +94,7 @@ Chapter 1. Admin Guide
>>
>> Definition of memory queue
>>
>> - Default value is "none".
>> + Default value is “none”.
>>
>> Value must be a list of parameters: attr=value;... The attribute
>> 'name'
>> is mandatory, defining the name of the queue. Optional attribute
>> 'size'
>> @@ -128,8 +128,11 @@ mq_add("myq", "$rU", "call from $fU");
>>
>> 4.2. mq_fetch(queue)
>>
>> - Take oldest item from que and fill $mqk(queue) and $mqv(queue)
>> pseudo
>> - variables. Return true on success.
>> + Take oldest item from queue and fill $mqk(queue) and $mqv(queue)
>> pseudo
>> + variables.
>> +
>> + Return: true on success (1); false on failure (-1) or no item
>> fetched
>> + (-2).
>>
>> Example 1.3. mq_fetch usage
>> ...
>> diff --git a/modules/mqueue/doc/mqueue_admin.xml
>> b/modules/mqueue/doc/mqueue_admin.xml
>> index e02ca38..d1b924a 100644
>> --- a/modules/mqueue/doc/mqueue_admin.xml
>> +++ b/modules/mqueue/doc/mqueue_admin.xml
>> @@ -118,8 +118,12 @@ mq_add("myq", "$rU", "call from $fU");
>> <function moreinfo="none">mq_fetch(queue)</function>
>> </title>
>> <para>
>> - Take oldest item from que and fill $mqk(queue) and
>> $mqv(queue) pseudo
>> - variables. Return true on success.
>> + Take oldest item from queue and fill $mqk(queue) and
>> + $mqv(queue) pseudo variables.
>> + </para>
>> + <para>
>> + Return: true on success (1); false on failure (-1) or
>> + no item fetched (-2).
>> </para>
>> <example>
>> <title><function>mq_fetch</function> usage</title>
>> diff --git a/modules/mqueue/mqueue_api.c b/modules/mqueue/mqueue_api.c
>> index f75f23a..6007ef0 100644
>> --- a/modules/mqueue/mqueue_api.c
>> +++ b/modules/mqueue/mqueue_api.c
>> @@ -254,17 +254,21 @@ int mq_head_fetch(str *name)
>> return -1;
>> lock_get(&mh->lock);
>>
>> - if(mh->ifirst!=NULL)
>> + if(mh->ifirst==NULL)
>> {
>> - mp->item = mh->ifirst;
>> - mh->ifirst = mh->ifirst->next;
>> - if(mh->ifirst==NULL) {
>> - mh->ilast = NULL;
>> - } else {
>> - mh->ifirst->prev = NULL;
>> - }
>> - mh->csize--;
>> + /* empty queue */
>> + lock_release(&mh->lock);
>> + return -2;
>> + }
>> +
>> + mp->item = mh->ifirst;
>> + mh->ifirst = mh->ifirst->next;
>> + if(mh->ifirst==NULL) {
>> + mh->ilast = NULL;
>> + } else {
>> + mh->ifirst->prev = NULL;
>> }
>> + mh->csize--;
>>
>> lock_release(&mh->lock);
>> return 0;
>> diff --git a/modules/mqueue/mqueue_mod.c b/modules/mqueue/mqueue_mod.c
>> index 922f02e..5a74f58 100644
>> --- a/modules/mqueue/mqueue_mod.c
>> +++ b/modules/mqueue/mqueue_mod.c
>> @@ -109,8 +109,11 @@ static void mod_destroy(void)
>>
>> static int w_mq_fetch(struct sip_msg* msg, char* mq, char* str2)
>> {
>> - if(mq_head_fetch((str*)mq)<0)
>> - return -1;
>> + int ret;
>> +
>> + ret = mq_head_fetch((str*)mq);
>> + if(ret<0)
>> + return ret;
>> return 1;
>> }
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> sr-dev mailing list
>> sr-dev at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
More information about the sr-dev
mailing list