GNU libmicrohttpd
0.9.5
Main Page
Data Structures
Files
File List
Globals
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
117
size_t
118
MHD_http_unescape
(
void
*cls,
119
struct
MHD_Connection
*connection,
120
char
*val)
121
{
122
char
*rpos = val;
123
char
*wpos = val;
124
char
*end;
125
unsigned
int
num;
126
char
buf3[3];
127
128
while
(
'\0'
!= *rpos)
129
{
130
switch
(*rpos)
131
{
132
case
'+'
:
133
*wpos =
' '
;
134
wpos++;
135
rpos++;
136
break
;
137
case
'%'
:
138
buf3[0] = rpos[1];
139
buf3[1] = rpos[2];
140
buf3[2] =
'\0'
;
141
num = strtoul (buf3, &end, 16);
142
if
(
'\0'
== *end)
143
{
144
*wpos = (
unsigned
char) num;
145
wpos++;
146
rpos += 3;
147
break
;
148
}
149
/* intentional fall through! */
150
default
:
151
*wpos = *rpos;
152
wpos++;
153
rpos++;
154
}
155
}
156
*wpos =
'\0'
;
/* add 0-terminator */
157
return
wpos - val;
/* = strlen(val) */
158
}
159
160
time_t
MHD_monotonic_time
(
void
)
161
{
162
#ifdef HAVE_CLOCK_GETTIME
163
struct
timespec ts;
164
if
(clock_gettime(CLOCK_MONOTONIC, &ts) == 0)
165
return
ts.tv_sec;
166
#endif
167
return
time(
NULL
);
168
}
169
170
/* end of internal.c */
src
daemon
internal.c
Generated by
1.8.1.1