cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: PATCH: A fix to allow OpenVMS to (HTTP) POST data larger than 64K...

From: Marty Kuhrt <marty_at_Barra.COM>
Date: Thu, 10 Jun 2004 09:03:12 -0700 (PDT)

On Thu, 10 Jun 2004, Daniel Stenberg wrote:

> On Thu, 10 Jun 2004, Tim Sneddon, Systems Programmer, BSD, Infomedia Ltd wrote:
>
> > o. lib/sendf.c - This is the code changed to allow buffers
> > larger than 64K to be sent. It basically
> > splits the buffer up using a 64K window and
> > sends it piece by piece.
> >
> > The code is #ifdef'd :-( using
> > HAVE_VMS_64K_LIMIT. Didn't really want to
> > break anyone else's system.
>
> Hm. I understand and sympathize for the need of this fix. I'm only wondering
> if it can't be made in a slightly nicer way. Have you tried to lower the limit
> libcurl uses to determine weather the full POST should be sent in the first
> initial send() ? libcurl checks the size of the full POST and if it is larger
> than 100K, it will split it up and send it in multiple pieces and when doing
> this, it will never use pieces larger than 64K. So, if you try to lower the
> 100K limit down to 60K, does that work for you? (the check is done at
> lib/http.c:1891 in my version)
>
> The 100K limit is not scientificly determined, we could easily move it around
> to better suit us and having it set to 60K shouldn't hurt anyone much and
> would in my eyes provide a much simpler and more elegant solution to your
> problem.

Daniel, if I'm reading your reply correctly, you say that the only
time something is sent larger than 64K is in the initial send() and
that is set by the hardcoded line? If that is the case then perhaps
this could be solved by having that line refer to some constant,
MAX_PACKET_SIZE, or something. We could ifdefVMS it to whatever size
works. I use Multinet, not hp's IP stack, so I don't know if I have
this same problem (I could check, I suppose).

>
> > o. src/getpass.c - When building the updated source I found
> > that this module would not build because
> > of the "struct _iosb iosb" declaration that
> > had been left behind.
>
> Oh. This "left behind" struct was just recently added by Marty Kuhrt, our
> friend in VMS package land. Just removing it will probably re-introduce
> problems he's tried to fix...
>
> Marty, what do you say?

I guess I'm not sure what "left behind" means. The fix I put in
back on 23-JAN-2004 seems to have gone missing for a while. It is
back in place in V1.8 of getpass.c as of 8-JUN-2004. This was done
because on the VAX platform (not AXP or IA64) there wasn't an
iosbdef.h file, so I cut the relevant iosb def from the AXP DECC
header and inserted it.

I'm all for changes to make possibly broken functions work on VMS.
Since I don't run the tests against the VMS builds, I can only vouch
for the stuff I use. The more the merrier!

Thanks, Tim, for pitching in.
Received on 2004-06-10