Hi Jeff,

Thank you for the answer. I was thiking that such a problem really exists,
and that's why I decided not to touch the source code on this.

It seems to me a bad thing to have a such low limit for file uploads. As I
don't know this implementation, do you think there's any other way we can
increase the file upload limit?

2011/5/16 Jeff Rogers <dv...@diphi.com>

> You could set the max upload value to INT_MAX (2^31-1, as you have below),
> and that should work, but going higher will be difficult. Simply changing
> the variable to a long in one place is insufficient, because that value is
> handled in quite a few places, and you'd need to change all of them; the
> obvious one is the Limits structure referenced in the code snippet you have,
> but there's also buffer sizes and scanf formats (to read the upload size
> from the http request) to handle, and probably a few others as well.
>
> -J
>
> Eduardo Santos wrote:
>
>> Hi everybody,
>>
>> My system have very specific needs to upload really large files
>> sometimes. My upload limit is actually 400MB, but I've received a
>> request to raise this value to 2GB.
>>
>> I'm using AOLServer 4.5.1 and I know this is based on ns_limits command.
>> So, I used the following piece of code to raise the upload size:
>>
>> set max_file_upload_mb 2500
>> set size [expr $max_file_upload_mb * 1024 * 1024]
>> ns_limits set default -maxupload $size
>>
>> However, the response was completely unexpected:
>>
>> nrunning 3 nwaiting 0 ntimeout 0 ndropped 0 noverflow 0 maxwait 100
>> maxupload -1673527296 timeout 60 maxrun 100
>>
>>
>> /maxupload/ had a negative size! I started digging up in C source code
>> from AOLServer, and I guess I've found the problem. In the file
>> nsd/limits.c we have the following piece of code:
>>
>>     int i, val;
>>     static CONST char *opts[] = {
>> "get", "set", "list", "register", NULL
>>     };
>>     enum {
>>         LGetIdx, LSetIdx, LListIdx, LRegisterIdx
>>     } opt;
>>     static CONST char *cfgs[] = {
>> "-maxrun", "-maxwait", "-maxupload", "-timeout", NULL
>>     };
>>
>> (...)
>>             switch (cfg) {
>>
>>                 case LCUploadIdx:
>>                     limitsPtr->maxupload = val;
>>                     break;
>>
>>             }
>>         }
>>
>>
>> It seems like /maxupload/ receives the value from /val/, wich is an int
>> var. If I'm not wrong, the maximum value for C int vars
>> is 2,147,483,647, and I was trying to setup this value to 2,621,440,000,
>> wich seems to be causing an overflow.
>>
>> Considering all this, if I just change the line below everything should
>> work, right?
>>
>>     int i, val;
>>
>> I could just use:
>>
>>     int i;
>>     bigint val;
>>
>> Did I say something wrong or this line of thinking make any sense?
>>
>> --
>> Eduardo Santos
>> Analista de Sistemas
>>
>> http://eduardosan.wordpress.com
>> http://twitter.com/eduardosan
>>
>> -- AOLserver - http://www.aolserver.com/
>>
>> To Remove yourself from this list, simply send an email to
>> <lists...@listserv.aol.com> with the body of "SIGNOFF AOLSERVER" in the
>> email message. You can leave the Subject: field of your email blank.
>>
>>
>
> --
> AOLserver - http://www.aolserver.com/
>
> To Remove yourself from this list, simply send an email to <
> lists...@listserv.aol.com> with the
> body of "SIGNOFF AOLSERVER" in the email message. You can leave the
> Subject: field of your email blank.
>



-- 
Eduardo Santos
Analista de Sistemas

http://eduardosan.wordpress.com
http://twitter.com/eduardosan


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to 
<lists...@listserv.aol.com> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
field of your email blank.

Reply via email to