GNU libmicrohttpd
0.9.5
Main Page
Data Structures
Files
File List
Globals
postprocessor_large_test.c
Go to the documentation of this file.
1
/*
2
This file is part of libmicrohttpd
3
(C) 2008 Christian Grothoff
4
5
libmicrohttpd is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published
7
by the Free Software Foundation; either version 2, or (at your
8
option) any later version.
9
10
libmicrohttpd is distributed in the hope that it will be useful, but
11
WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
General Public License for more details.
14
15
You should have received a copy of the GNU General Public License
16
along with libmicrohttpd; see the file COPYING. If not, write to the
17
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18
Boston, MA 02111-1307, USA.
19
*/
20
27
#include "
platform.h
"
28
#include "
microhttpd.h
"
29
#include "
internal.h
"
30
31
#ifndef WINDOWS
32
#include <unistd.h>
33
#endif
34
35
static
int
36
value_checker
(
void
*cls,
37
enum
MHD_ValueKind
kind,
38
const
char
*key,
39
const
char
*filename,
40
const
char
*content_type,
41
const
char
*transfer_encoding,
42
const
char
*data, uint64_t off,
size_t
size)
43
{
44
unsigned
int
*pos = cls;
45
#if 0
46
fprintf (stderr,
47
"VC: %llu %u `%s' `%s' `%s' `%s' `%.*s'\n"
,
48
off, size,
49
key, filename, content_type, transfer_encoding, size, data);
50
#endif
51
if
(size == 0)
52
return
MHD_YES
;
53
*pos += size;
54
return
MHD_YES
;
55
56
}
57
58
59
static
int
60
test_simple_large
()
61
{
62
struct
MHD_Connection
connection;
63
struct
MHD_HTTP_Header
header;
64
struct
MHD_PostProcessor *pp;
65
int
i;
66
int
delta;
67
size_t
size;
68
char
data[102400];
69
unsigned
int
pos;
70
71
pos = 0;
72
memset (data,
'A'
,
sizeof
(data));
73
memcpy (data,
"key="
, 4);
74
data[
sizeof
(data) - 1] =
'\0'
;
75
memset (&connection, 0,
sizeof
(
struct
MHD_Connection
));
76
memset (&header, 0,
sizeof
(
struct
MHD_HTTP_Header
));
77
connection.
headers_received
= &header;
78
header.
header
=
MHD_HTTP_HEADER_CONTENT_TYPE
;
79
header.
value
=
MHD_HTTP_POST_ENCODING_FORM_URLENCODED
;
80
header.
kind
=
MHD_HEADER_KIND
;
81
pp =
MHD_create_post_processor
(&connection, 1024, &
value_checker
, &pos);
82
i = 0;
83
size = strlen (data);
84
while
(i < size)
85
{
86
delta = 1 +
RANDOM
() % (size - i);
87
MHD_post_process
(pp, &data[i], delta);
88
i += delta;
89
}
90
MHD_destroy_post_processor
(pp);
91
if
(pos !=
sizeof
(data) - 5)
/* minus 0-termination and 'key=' */
92
return
1;
93
return
0;
94
}
95
96
int
97
main
(
int
argc,
char
*
const
*argv)
98
{
99
unsigned
int
errorCount = 0;
100
101
errorCount +=
test_simple_large
();
102
if
(errorCount != 0)
103
fprintf (stderr,
"Error (code: %u)\n"
, errorCount);
104
return
errorCount != 0;
/* 0 == pass */
105
}
src
daemon
postprocessor_large_test.c
Generated by
1.8.1.2