Ive tried 3 distinct directories now. All fail when the size of the return reaches ~0x3FFF. I even tried building a hash with numbers from 0-50K. Same result.
To be clear: Im not doing any special work with the Soap return values. Im letting the package do all the marshaling for me. It has worked great as long as Ive stayed below the apparent max values.
Chances are good that Im doing something ignorant here. I'd be more than happy to eat the proverbial crow and have the error be mine. If someone wants to point it out and rub my nose in it Im ok with that. I need Soap::Lite to work. I *really* don't want to have to go back and re-write tons of code in C++. | [reply] |
Chances are good that Im doing something ignorant here.
Unfortunately, I think chances are better that there's some serialisation bug in SOAP::Lite ;)
Obviously the size of the data-structure should have no impact on serialisation. If you've tested at just below and just above 0x3FFF and can repeat the result, then report a bug. There are many 1+ year old bugs there so I don't know whether that will help, but documenting the bug can't hurt.
The serialisation classes don't look too complicated... you may wish to have a go at debugging this yourself.
Martin Kutter would seem to be the active maintainer (someone please correct me if necessary), so you could probably direct any questions (which get raised in tracking it down yourself) to him. Martin wrote SOAP::WSDL (one of my favourite modules) which takes the hassle out of the client-side... I'm pretty sure he understands the SOAP::Lite codebase well ;)
-David
| [reply] |
The worm has turned..
In order to make a 'clean' repro case I started pruning the code down to its most essential form. One thing I took out was the https: wrapper that I was using (HTTP::Daemon::SSL). The truncation issue has gone away!
Im looking at the return value(s) from my test package before it hits the 'send_response' and its intact.
Now Im digging into the docs for the SSL wrapper.
Further: it appears to be solely contingent on the SSL portion. If I wrap my SOAP package in HTTP::Daemon it works fine. Adding the ::SSL causes the fault.
Now I need to see if this is 'by design'.
EDIT: at this point Im guessing that because my client is sending the 'HTTP1.1' header the return value is getting sliced up. From the docs for HTTP::Daemon If the client is HTTP/1.1 aware then we will use chunked transfer encoding for the response.
| [reply] |