Basic libURL bug?
Dave Cragg
dave.cragg at lacscentre.co.uk
Sun Jan 2 21:12:17 EST 2011
On 3 Jan 2011, at 00:34, Mark Wieder wrote:
> Chipp-
>
> Sunday, January 2, 2011, 4:26:40 PM, you wrote:
>
>> Even more interesting. On my Mac, it returns correctly, just not on my PC.
>
> Yep. I can verify that here. Returns 4558 every time on OSX. On XP I'm
> getting different results. Sometimes 4558, sometimes 0 (I added a "put
> the result into field 2" and sometimes find interesting things there:
> "error No Header received"), I've gotten 1583, 3675...
I'm also seeing strange results on Windows.
At first it seemed like random quantities of data were being received, but now it seems "stable" and consistently receives 207169 bytes of data (out of 1079427).
Some stranger stuff...
I tried to trace what was happening in libUrl. (edit script of button "revLibUrl" of stack "revLibrary")
In the libUrl script there is a handler named ulDoProcessLength. The start of this handler looks like this, except for the two "DEBUG" lines I added. If you uncomment these, they will output into a field that you can set with libUrlSetLogField.
on ulDoProcessLength x,y
local tStatus
##normal http case
if y <> empty then
ulStoreData laUrl[x],y
add length(y) to laReadBytes[laUrl[x]]
//ulLogIt laReadBytes[laUrl[x]] & "," & length(y) & cr //DEBUG 1 -ADDED BY ME
end if
if laReadBytes[laUrl[x]] >= laLength[laUrl[x]] then
put "true" into laStatus[laUrl[x]]
//ulLogIt laReadBytes[laUrl[x]] & ", " & laLength[laUrl[x]] & "," & length(y) & cr //DEBUG 2 - ADDED BY ME
if char 1 of laStatusCode[laUrl[x]] = 2 then ##in 200 range--OK
if laFile[laUrl[x]] is empty then
put "cached" into tStatus
else
put "downloaded" into tStatus
end if
If I uncomment the first DEBUG line, all the data gets downloaded. This seems to be consistent. Not sure what this means, but at a guess, I'd say the short time used to log the data is allowing LC to read properly from the socket.
But stranger still...
If I uncomment the second debug line (and comment the first one), it outputs this in the log field:
207169, 1079427,1440
Given the condition in the "if" line, this should be impossible.
Maybe I've had too much sherry over the holiday, so if someone would like to try and see if they see the same it would be interesting.
One question, Chipp. Is there anything in the data that might "upset" LC and therefore cause stange comparison results?
Cheers
Dave
More information about the use-livecode
mailing list