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
