Hello Marcel, and Christian,

I saw my message been published on the mailing list and seems like later
removed.  Could you please explain?  I was actually hoping for response!



-Sahaja


-----Original Message-----
From: Sahaja Talla 
Sent: Thursday, November 08, 2007 11:44 AM
To: '[email protected]'
Cc: Gerard Pallipuram; Ravi Duggaraju; Frederic Danis; Rene Pourtier;
Diane Holt
Subject: to minor fixes needed in the openobex code

Hi Marcel, Christian and all -

The SYNCML-OBEX binding (link provided in the following)

http://www.openmobilealliance.org/release_program/docs/Common/V1_2-20040
601-C/OMA-SyncML-OBEXBinding-V1_2-20040601-C.pdf

mandates that OBEX server should provide the proper responses during
connection establishment (this contains the important information such
as connection id that is used in all the subsequent communication) and
when message is to be sent is large such that PUT request is fragmented
among multiple requests, and when GET request is split.  However the
current openobex code doesn't properly handover that response data.  

In case of connect response it does call the call back function
registered during the OBEX_Init call.  However it doesn't pass the
correct data that was sent by the STCS OBEX server.   In case of PUT and
GET CONTNUE response the call back routines is not even called.  I
needed to make the following changes to the openobex source code, and
all of them are related to this same issue.

In obex_client.c :
int obex_client(obex_t *self, buf_t *msg, int final)
{ 
.
.
.
// The following is to ensure that OBEX_RSP_CONTINUE responses from the
obex
// server are also passed on via event call back routine; Comment out
the 
// code to handle OBEX_RSP_CONTINUE differently than the case when 
// OBEX_RSP_SUCCESS
if (rsp == OBEX_RSP_CONTINUE) { ==> if (0)//(rsp == OBEX_RSP_CONTINUE) 
                        DEBUG(3, "Continue...\n");

                if (0)//(rsp == OBEX_RSP_CONTINUE) 
                
                
                
In obex_main.c :
void obex_deliver_event(obex_t *self, int event, int cmd, int rsp, int
del)
{
.
.
self->eventcb(self, object, OBEX_MODE_CLIENT, event, cmd, rsp); ==>
self->eventcb(self, self->rx_msg->buffer, OBEX_MODE_CLIENT, event, cmd,
rsp);
        
.
.               
                
}



In obex_tranport.c :
int obex_transport_handle_input(obex_t *self, int timeout)
{

.....
if( (self->fd >= 0) && FD_ISSET(self->fd, &fdset)) {
                        
DEBUG(4, "Data available on client socket\n");
// The following is to ensure that, when receiving continue response
from 
// the obex server, state machine is in receiving state;   If you prefer

// same thing could be done after calling obex_object_send even when the

// message is not completely sent out

self->state = MODE_CLI | STATE_REC;     <=== this line is added
                

Also in obex.c I had to add my own function to establish a tcp
connection.


The files with changes are also attached.  Please advise as to how best
to get these changes into openobex.



Sahaja


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Openobex-users mailing list
[email protected]
http://lists.sourceforge.net/lists/listinfo/openobex-users

Reply via email to