GNU libmicrohttpd
0.9.29
Main Page
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
internal.c
Go to the documentation of this file.
1
/*
2
This file is part of libmicrohttpd
3
(C) 2007 Daniel Pittman and Christian Grothoff
4
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Lesser General Public
7
License as published by the Free Software Foundation; either
8
version 2.1 of the License, or (at your option) any later version.
9
10
This library is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
Lesser General Public License for more details.
14
15
You should have received a copy of the GNU Lesser General Public
16
License along with this library; if not, write to the Free Software
17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
*/
19
27
#include "
internal.h
"
28
29
#if HAVE_MESSAGES
30
#if DEBUG_STATES
31
34
const
char
*
35
MHD_state_to_string (
enum
MHD_CONNECTION_STATE
state)
36
{
37
switch
(state)
38
{
39
case
MHD_CONNECTION_INIT
:
40
return
"connection init"
;
41
case
MHD_CONNECTION_URL_RECEIVED
:
42
return
"connection url received"
;
43
case
MHD_CONNECTION_HEADER_PART_RECEIVED
:
44
return
"header partially received"
;
45
case
MHD_CONNECTION_HEADERS_RECEIVED
:
46
return
"headers received"
;
47
case
MHD_CONNECTION_HEADERS_PROCESSED
:
48
return
"headers processed"
;
49
case
MHD_CONNECTION_CONTINUE_SENDING
:
50
return
"continue sending"
;
51
case
MHD_CONNECTION_CONTINUE_SENT
:
52
return
"continue sent"
;
53
case
MHD_CONNECTION_BODY_RECEIVED
:
54
return
"body received"
;
55
case
MHD_CONNECTION_FOOTER_PART_RECEIVED
:
56
return
"footer partially received"
;
57
case
MHD_CONNECTION_FOOTERS_RECEIVED
:
58
return
"footers received"
;
59
case
MHD_CONNECTION_HEADERS_SENDING
:
60
return
"headers sending"
;
61
case
MHD_CONNECTION_HEADERS_SENT
:
62
return
"headers sent"
;
63
case
MHD_CONNECTION_NORMAL_BODY_READY
:
64
return
"normal body ready"
;
65
case
MHD_CONNECTION_NORMAL_BODY_UNREADY
:
66
return
"normal body unready"
;
67
case
MHD_CONNECTION_CHUNKED_BODY_READY
:
68
return
"chunked body ready"
;
69
case
MHD_CONNECTION_CHUNKED_BODY_UNREADY
:
70
return
"chunked body unready"
;
71
case
MHD_CONNECTION_BODY_SENT
:
72
return
"body sent"
;
73
case
MHD_CONNECTION_FOOTERS_SENDING
:
74
return
"footers sending"
;
75
case
MHD_CONNECTION_FOOTERS_SENT
:
76
return
"footers sent"
;
77
case
MHD_CONNECTION_CLOSED
:
78
return
"closed"
;
79
case
MHD_TLS_CONNECTION_INIT
:
80
return
"secure connection init"
;
81
default
:
82
return
"unrecognized connection state"
;
83
}
84
}
85
#endif
86
#endif
87
88
#if HAVE_MESSAGES
89
93
void
94
MHD_DLOG (
const
struct
MHD_Daemon
*daemon,
const
char
*format, ...)
95
{
96
va_list va;
97
98
if
((daemon->
options
&
MHD_USE_DEBUG
) == 0)
99
return
;
100
va_start (va, format);
101
daemon->custom_error_log (daemon->custom_error_log_cls, format, va);
102
va_end (va);
103
}
104
#endif
105
106
118
size_t
119
MHD_http_unescape
(
void
*cls,
120
struct
MHD_Connection
*connection,
121
char
*val)
122
{
123
char
*rpos = val;
124
char
*wpos = val;
125
char
*end;
126
unsigned
int
num;
127
char
buf3[3];
128
129
while
(
'\0'
!= *rpos)
130
{
131
switch
(*rpos)
132
{
133
case
'+'
:
134
*wpos =
' '
;
135
wpos++;
136
rpos++;
137
break
;
138
case
'%'
:
139
if
( (
'\0'
== rpos[1]) ||
140
(
'\0'
== rpos[2]) )
141
{
142
*wpos =
'\0'
;
143
return
wpos - val;
144
}
145
buf3[0] = rpos[1];
146
buf3[1] = rpos[2];
147
buf3[2] =
'\0'
;
148
num = strtoul (buf3, &end, 16);
149
if
(
'\0'
== *end)
150
{
151
*wpos = (
unsigned
char) num;
152
wpos++;
153
rpos += 3;
154
break
;
155
}
156
/* intentional fall through! */
157
default
:
158
*wpos = *rpos;
159
wpos++;
160
rpos++;
161
}
162
}
163
*wpos =
'\0'
;
/* add 0-terminator */
164
return
wpos - val;
/* = strlen(val) */
165
}
166
167
168
time_t
169
MHD_monotonic_time
(
void
)
170
{
171
#ifdef HAVE_CLOCK_GETTIME
172
#ifdef CLOCK_MONOTONIC
173
struct
timespec ts;
174
175
if
(0 == clock_gettime (CLOCK_MONOTONIC, &ts))
176
return
ts.tv_sec;
177
#endif
178
#endif
179
return
time (
NULL
);
180
}
181
182
/* end of internal.c */
src
microhttpd
internal.c
Generated by
1.8.3.1