diff options
Diffstat (limited to 'modules/test/mod_rndchunk.c')
-rw-r--r-- | modules/test/mod_rndchunk.c | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/modules/test/mod_rndchunk.c b/modules/test/mod_rndchunk.c deleted file mode 100644 index 6eeae175ac..0000000000 --- a/modules/test/mod_rndchunk.c +++ /dev/null @@ -1,179 +0,0 @@ -/* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2000-2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" must - * not be used to endorse or promote products derived from this - * software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - * - * Portions of this software are based upon public domain software - * originally written at the National Center for Supercomputing Applications, - * University of Illinois, Urbana-Champaign. - */ - -/* - * This module is intended to be used for testing chunked encoding. It - * generates a whole whack of output using ap_bputc() and ap_bputs(). It - * also exercises start_chunk() and end_chunk() in buff.c. To use it - * you should use a tool like netcat and the src/test/check_chunked - * tool. Add something like this to your access.conf file: - * - * <Location /rndchunk> - * SetHandler rndchunk - * </Location> - * - * Then fake requests such as: - * - * GET /rndchunk?0,1000000 HTTP/1.1 - * Host: localhost - * - * The first arg is the random seed, the second is the number of - * "things" to do. You should try a few seeds. - * - * You should also edit main/buff.c and change DEFAULT_BUFSIZE (and - * CHUNK_HEADER_SIZE). Small values are particularly useful for - * finding bugs. Try a few different values. - * - * -djg - */ - -#include "httpd.h" -#include "http_protocol.h" -#include "http_config.h" -#include "http_main.h" - -#define MAX_SEGMENT 32 -#define ONE_WEIGHT (256-32) - -static int send_rndchunk(request_rec *r) -{ - const char *args; - char *endptr; - unsigned int seed; - unsigned int count; - int i; - char buf[MAX_SEGMENT + 1]; - unsigned int len; - - r->allowed |= (1 << M_GET); - if (r->method_number != M_GET) - return DECLINED; - - r->content_type = "text/html"; - if(r->header_only) { - return 0; - } - ap_hard_timeout("send_rndchunk", r); - - if (!r->chunked) { - ap_rputs("Not chunked!", r); - ap_kill_timeout(r); - return 0; - } - - args = r->args; - if (!args) { -error: - ap_rputs("Must include args! ... of the form <code>?seed,count</code>", r); - ap_kill_timeout(r); - return 0; - } - seed = strtol(args, &endptr, 0); - if (!endptr || *endptr != ',') { - goto error; - } - ++endptr; - count = strtol(endptr, &endptr, 0); - - srandom(seed); - for (i = 0; i < count; ++i) { - len = random() % (MAX_SEGMENT + ONE_WEIGHT); - if (len >= MAX_SEGMENT) { - ap_rputc((i & 1) ? '0' : '1', r); - } - else if (len == 0) { - /* not a really nice thing to do, but we need to test - * beginning/ending chunks as well - */ - ap_bsetflag(r->connection->client, B_CHUNK, 0); - ap_bsetflag(r->connection->client, B_CHUNK, 1); - } - else { - memset(buf, '2' + len, len); - buf[len] = 0; - ap_rputs(buf, r); - } - } - ap_kill_timeout(r); - return 0; -} - -static const handler_rec rndchunk_handlers[] = -{ - {"rndchunk", send_rndchunk}, - {NULL} -}; - -module rndchunk_module = { - STANDARD_MODULE_STUFF, - NULL, /* initializer */ - NULL, /* dir config creater */ - NULL, /* dir merger --- default is to override */ - NULL, /* server config */ - NULL, /* merge server config */ - NULL, /* command apr_table_t */ - rndchunk_handlers, /* handlers */ - NULL, /* filename translation */ - NULL, /* check_user_id */ - NULL, /* check auth */ - NULL, /* check access */ - NULL, /* type_checker */ - NULL, /* fixups */ - NULL, /* logger */ - NULL /* header parser */ -}; |