Zitat von "Luiz Augusto von Dentz" <luiz.de...@gmail.com>:

> Hi,
>
> On Mon, Oct 18, 2010 at 2:55 PM, Hendrik Sattler
> <p...@hendrik-sattler.de> wrote:
>> Zitat von "Luiz Augusto von Dentz" <luiz.de...@gmail.com>:
>>
>>> From: Luiz Augusto von Dentz <luiz.dentz-...@nokia.com>
>>>
>>> Also deliver ABORT signal so the user application can free whatever
>>> resource being use to handle the request.
>>> ---
>>>  lib/obex_main.c |    7 +++++++
>>>  1 files changed, 7 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/lib/obex_main.c b/lib/obex_main.c
>>> index 0a72c14..5f1f6e6 100644
>>> --- a/lib/obex_main.c
>>> +++ b/lib/obex_main.c
>>> @@ -378,6 +378,13 @@ int obex_cancelrequest(obex_t *self, int nice)
>>>
>>>                obex_object_delete(object);
>>>
>>> +               if (self->mode == MODE_SRV) {
>>> +                       self->state = STATE_IDLE;
>>> +                       obex_deliver_event(self, OBEX_EV_ABORT,
>>> +                                               self->object->opcode, 0,
>>> TRUE);
>>
>> I know that most obex_deliver_event() calls are not correct when they signal
>> errors (like above your changed lines in the very same function) but let's
>> try not to instroduce additional ones :-)
>> self->object->opcode contains the response code at this point, most likely.
>> You want to  use obex_object_getcmd(); you need to make it global
>> (non-static) first, though.
>>
>> Why is this event only sent for a server, anyway? For the "!nice" part we
>> send it unconditionally, obex_object_getcmd() will give you the right one
>> for server and client.
>
> Yep, it should be sent to the client too, good catch. Now about
> obex_object_getcmd we can fix it in another patch since Im afraid
> there quite a few places where we need to fix it, so for now Im going
> to use 0.

OK. Will you do a patch for that or shall I?

> The patch now looks like this:
>
> diff --git a/lib/obex_main.c b/lib/obex_main.c
> index 0a72c14..c16aa04 100644
> --- a/lib/obex_main.c
> +++ b/lib/obex_main.c
> @@ -379,7 +379,10 @@ int obex_cancelrequest(obex_t *self, int nice)
>                 obex_object_delete(object);
>
>                 self->object->abort = TRUE;
> -               self->state = STATE_REC;
> +               self->state = self->mode == MODE_SRV ? STATE_IDLE :  
> STATE_REC;
> +
> +               /* Deliver event will delete the object */
> +               obex_deliver_event(self, OBEX_EV_ABORT, 0, 0, TRUE);
>
>                 return 0;
>         }

OK.

HS


------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly 
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Openobex-users mailing list
Openobex-users@lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/openobex-users

Reply via email to