Аноним | вход | зарегистрировать новую учетную запись | 2021-01-25 06:05 EET |
главная | моя сводка | список вопросов | журнал изменений | план развития | документация | моя учетная запись |
Простой вид [ комментарии ] | [ расширенный вид ] [ история ] [ печать ] | |||||||||||
Номер | Категория | Серьезность | Воспроизводимость | Создан | Изменен | |||||||
0000242 | [obex-data-server] General | большая | всегда | 2009-12-09 15:53 | 2010-11-01 19:39 | |||||||
Инициатор | cgarcia | Видимость | общая | |||||||||
Ответственный | ||||||||||||
Приоритет | обычный | Решение | открыт | |||||||||
Состояние | новый | Версия продукта | 0.4.5 | |||||||||
Суть | 0000242: delete not compliant with obex specification | |||||||||||
Подробности |
I have debugged a communication problem (with a own-developed client) until finding that the server does not follows the OBEX specification for deleting files, potentially causing data transmissions to be incorrectly handled as if they were file deletions. Since I have previously used the same client and never found a problem (both with other linux and Windows/Mac obex servers) I suspect that this may cause incompatibilities with many other clients out there, depending on their design. I detected the problem in the 0.4.4 version ship with ubuntu karmic, but it is still present in the subversion trunk (I have not tested previous versions). The problem is due to the following: the function ods_obex_srv_put() in ods-obex.c considers that the PUT request is a file deletion (is_delete = TRUE) unless the client has previously sent any of the following headers: OBEX_HDR_BODY, OBEX_HDR_TYPE or OBEX_HDR_LENGTH. Since my client do not sends the type nor the length (unknown at transmission start) and it does not sends a body header in the first packet, obex-data-server incorrectly interpretes this as a file deletion and aborts the data transmission. The OBEX specification (at least 1.2) says about delete: "A PUT operation with NO Body or End-of-Body headers whatsoever should be treated as a delete request. Similarly, a PUT operation with an empty End-of-Body header requests the recipient to create an empty object. This definition may not make sense or apply to every implementation (in other words devices are not required to support delete operations or empty objects)." That is, it mentions the complete "PUT operation" (not the first packet) and includes a "whatsoever" word. In another section, the specification is even more clear about this fact: "A PUT request consists of one or more request packets, the last of which has the Final bit set in the opcode. The implementer may choose whether to include an object Body header in the first packet, or wait until the response to the initial packet is received before sending any object body chunks." I was one of those implementers choosing not to send a body header in the first packet. My current workarround in order to improve the compatibility with previous obex-data-server versions it will be to include a OBEX_HDR_TYPE. |
|||||||||||
Дополнительные сведения | ||||||||||||
Tэги | Нет прикрепленных тэгов. | |||||||||||
Вложенные файлы | ||||||||||||
|
Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group |