mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-25 04:09:31 +03:00
fix transmission stall issue with upgraded TLS connections reported by Nguyen Xuan Viet on the mailinglist
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
Sun 27 Sep 2020 10:08:03 PM CEST
|
||||||
|
Fixed incorrect triggering of epoll edge polling for
|
||||||
|
"upgraded" TLS connections. Fixed a few cases where
|
||||||
|
gnutls_record_uncork() return value was still ignored,
|
||||||
|
possibly causing buffer to not be flushed correctly. -CG
|
||||||
|
|
||||||
Sat 26 Sep 2020 08:18:02 PM CEST
|
Sat 26 Sep 2020 08:18:02 PM CEST
|
||||||
Make MHD_USE_NO_LISTEN_SOCKET work in conjunction with
|
Make MHD_USE_NO_LISTEN_SOCKET work in conjunction with
|
||||||
MHD internal threads. -CG/DE
|
MHD internal threads. -CG/DE
|
||||||
|
|||||||
@@ -102,10 +102,10 @@ main (int argc, char *const *argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
d = MHD_start_daemon (/* MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG, */
|
d = MHD_start_daemon (/* MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG, */
|
||||||
/* MHD_USE_AUTO | MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG, */
|
/* MHD_USE_AUTO | MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG, */
|
||||||
/* MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG | MHD_USE_POLL, */
|
/* MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG | MHD_USE_POLL, */
|
||||||
MHD_USE_THREAD_PER_CONNECTION | MHD_USE_INTERNAL_POLLING_THREAD
|
MHD_USE_THREAD_PER_CONNECTION | MHD_USE_INTERNAL_POLLING_THREAD
|
||||||
| MHD_USE_ERROR_LOG | MHD_USE_POLL, // | MHD_USE_ITC,
|
| MHD_USE_ERROR_LOG | MHD_USE_POLL, // | MHD_USE_ITC,
|
||||||
/* MHD_USE_THREAD_PER_CONNECTION | MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG, */
|
/* MHD_USE_THREAD_PER_CONNECTION | MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG, */
|
||||||
atoi (argv[1]),
|
atoi (argv[1]),
|
||||||
NULL, NULL, &ahc_echo, PAGE,
|
NULL, NULL, &ahc_echo, PAGE,
|
||||||
|
|||||||
+3
-3
@@ -283,11 +283,11 @@ list_directory (struct ResponseDataContext *rdc,
|
|||||||
snprintf (fullname, sizeof (fullname),
|
snprintf (fullname, sizeof (fullname),
|
||||||
"%s/%s",
|
"%s/%s",
|
||||||
dirname, de->d_name))
|
dirname, de->d_name))
|
||||||
continue; /* ugh, file too long? how can this be!? */
|
continue; /* ugh, file too long? how can this be!? */
|
||||||
if (0 != stat (fullname, &sbuf))
|
if (0 != stat (fullname, &sbuf))
|
||||||
continue; /* ugh, failed to 'stat' */
|
continue; /* ugh, failed to 'stat' */
|
||||||
if (! S_ISREG (sbuf.st_mode))
|
if (! S_ISREG (sbuf.st_mode))
|
||||||
continue; /* not a regular file, skip */
|
continue; /* not a regular file, skip */
|
||||||
if (rdc->off + 1024 > rdc->buf_len)
|
if (rdc->off + 1024 > rdc->buf_len)
|
||||||
{
|
{
|
||||||
void *r;
|
void *r;
|
||||||
|
|||||||
@@ -286,11 +286,11 @@ list_directory (struct ResponseDataContext *rdc,
|
|||||||
snprintf (fullname, sizeof (fullname),
|
snprintf (fullname, sizeof (fullname),
|
||||||
"%s/%s",
|
"%s/%s",
|
||||||
dirname, de->d_name))
|
dirname, de->d_name))
|
||||||
continue; /* ugh, file too long? how can this be!? */
|
continue; /* ugh, file too long? how can this be!? */
|
||||||
if (0 != stat (fullname, &sbuf))
|
if (0 != stat (fullname, &sbuf))
|
||||||
continue; /* ugh, failed to 'stat' */
|
continue; /* ugh, failed to 'stat' */
|
||||||
if (! S_ISREG (sbuf.st_mode))
|
if (! S_ISREG (sbuf.st_mode))
|
||||||
continue; /* not a regular file, skip */
|
continue; /* not a regular file, skip */
|
||||||
if (rdc->off + 1024 > rdc->buf_len)
|
if (rdc->off + 1024 > rdc->buf_len)
|
||||||
{
|
{
|
||||||
void *r;
|
void *r;
|
||||||
|
|||||||
@@ -69,13 +69,13 @@ ahc_echo (void *cls,
|
|||||||
*ptr = &aptr;
|
*ptr = &aptr;
|
||||||
return MHD_YES;
|
return MHD_YES;
|
||||||
}
|
}
|
||||||
*ptr = NULL; /* reset when done */
|
*ptr = NULL; /* reset when done */
|
||||||
/* WARNING: direct usage of url as filename is for example only!
|
/* WARNING: direct usage of url as filename is for example only!
|
||||||
* NEVER pass received data directly as parameter to file manipulation
|
* NEVER pass received data directly as parameter to file manipulation
|
||||||
* functions. Always check validity of data before using.
|
* functions. Always check validity of data before using.
|
||||||
*/
|
*/
|
||||||
if (NULL != strstr (url, "../")) /* Very simplified check! */
|
if (NULL != strstr (url, "../")) /* Very simplified check! */
|
||||||
fd = -1; /* Do not allow usage of parent directories. */
|
fd = -1; /* Do not allow usage of parent directories. */
|
||||||
else
|
else
|
||||||
fd = open (url + 1, O_RDONLY);
|
fd = open (url + 1, O_RDONLY);
|
||||||
if (-1 != fd)
|
if (-1 != fd)
|
||||||
|
|||||||
@@ -36,40 +36,40 @@
|
|||||||
"<title>WebSocket chat</title>\n" \
|
"<title>WebSocket chat</title>\n" \
|
||||||
"<script>\n" \
|
"<script>\n" \
|
||||||
"document.addEventListener('DOMContentLoaded', function() {\n" \
|
"document.addEventListener('DOMContentLoaded', function() {\n" \
|
||||||
" const ws = new WebSocket('ws://' + window.location.host);\n" \
|
" const ws = new WebSocket('ws:// ' + window.location.host);\n" \
|
||||||
" const btn = document.getElementById('send');\n" \
|
// " const btn = document.getElementById('send');\n" \
|
||||||
" const msg = document.getElementById('msg');\n" \
|
// " const msg = document.getElementById('msg');\n" \
|
||||||
" const log = document.getElementById('log');\n" \
|
// " const log = document.getElementById('log');\n" \
|
||||||
" ws.onopen = function() {\n" \
|
// " ws.onopen = function() {\n" \
|
||||||
" log.value += 'Connected\\n';\n" \
|
// " log.value += 'Connected\\n';\n" \
|
||||||
" };\n" \
|
// " };\n" \
|
||||||
" ws.onclose = function() {\n" \
|
// " ws.onclose = function() {\n" \
|
||||||
" log.value += 'Disconnected\\n';\n" \
|
// " log.value += 'Disconnected\\n';\n" \
|
||||||
" };\n" \
|
// " };\n" \
|
||||||
" ws.onmessage = function(ev) {\n" \
|
// " ws.onmessage = function(ev) {\n" \
|
||||||
" log.value += ev.data + '\\n';\n" \
|
// " log.value += ev.data + '\\n';\n" \
|
||||||
" };\n" \
|
// " };\n" \
|
||||||
" btn.onclick = function() {\n" \
|
// " btn.onclick = function() {\n" \
|
||||||
" log.value += '<You>: ' + msg.value + '\\n';\n" \
|
// " log.value += '<You>: ' + msg.value + '\\n';\n" \
|
||||||
" ws.send(msg.value);\n" \
|
// " ws.send(msg.value);\n" \
|
||||||
" };\n" \
|
// " };\n" \
|
||||||
" msg.onkeyup = function(ev) {\n" \
|
// " msg.onkeyup = function(ev) {\n" \
|
||||||
" if (ev.keyCode === 13) {\n" \
|
// " if (ev.keyCode === 13) {\n" \
|
||||||
" ev.preventDefault();\n" \
|
// " ev.preventDefault();\n" \
|
||||||
" ev.stopPropagation();\n" \
|
// " ev.stopPropagation();\n" \
|
||||||
" btn.click();\n" \
|
// " btn.click();\n" \
|
||||||
" msg.value = '';\n" \
|
// " msg.value = '';\n" \
|
||||||
" }\n" \
|
// " }\n" \
|
||||||
" };\n" \
|
// " };\n" \
|
||||||
"});\n" \
|
// "});\n" \
|
||||||
"</script>\n" \
|
// "</script>\n" \
|
||||||
"</head>\n" \
|
// "</head>\n" \
|
||||||
"<body>\n" \
|
// "<body>\n" \
|
||||||
"<input type='text' id='msg' autofocus/>\n" \
|
// "<input type='text' id='msg' autofocus/>\n" \
|
||||||
"<input type='button' id='send' value='Send' /><br /><br />\n" \
|
// "<input type='button' id='send' value='Send' /><br /><br />\n" \
|
||||||
"<textarea id='log' rows='20' cols='28'></textarea>\n" \
|
// "<textarea id='log' rows='20' cols='28'></textarea>\n" \
|
||||||
"</body>\n" \
|
// "</body>\n" \
|
||||||
"</html>"
|
// "</html>"
|
||||||
#define BAD_REQUEST_PAGE \
|
#define BAD_REQUEST_PAGE \
|
||||||
"<html>\n" \
|
"<html>\n" \
|
||||||
"<head>\n" \
|
"<head>\n" \
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ typedef intptr_t ssize_t;
|
|||||||
* Current version of the library.
|
* Current version of the library.
|
||||||
* 0x01093001 = 1.9.30-1.
|
* 0x01093001 = 1.9.30-1.
|
||||||
*/
|
*/
|
||||||
#define MHD_VERSION 0x00097104
|
#define MHD_VERSION 0x00097105
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Operational results from MHD calls.
|
* Operational results from MHD calls.
|
||||||
|
|||||||
@@ -188,8 +188,8 @@ thread_main_handle_connection (void *data)
|
|||||||
}
|
}
|
||||||
#endif /* HAVE_POLL */
|
#endif /* HAVE_POLL */
|
||||||
MHD_itc_clear_ (daemon->itc);
|
MHD_itc_clear_ (daemon->itc);
|
||||||
continue; /* Check again for resume. */
|
continue; /* Check again for resume. */
|
||||||
} /* End of "suspended" branch. */
|
} /* End of "suspended" branch. */
|
||||||
|
|
||||||
if (was_suspended)
|
if (was_suspended)
|
||||||
{
|
{
|
||||||
@@ -1047,7 +1047,7 @@ MHD_accept_connection_ (struct MHD_Daemon *daemon)
|
|||||||
/* This could be a common occurrence with multiple worker threads */
|
/* This could be a common occurrence with multiple worker threads */
|
||||||
if (MHD_SCKT_ERR_IS_ (err,
|
if (MHD_SCKT_ERR_IS_ (err,
|
||||||
MHD_SCKT_EINVAL_))
|
MHD_SCKT_EINVAL_))
|
||||||
return MHD_SC_DAEMON_ALREADY_SHUTDOWN; /* can happen during shutdown, let's hope this is the cause... */
|
return MHD_SC_DAEMON_ALREADY_SHUTDOWN; /* can happen during shutdown, let's hope this is the cause... */
|
||||||
if (MHD_SCKT_ERR_IS_DISCNN_BEFORE_ACCEPT_ (err))
|
if (MHD_SCKT_ERR_IS_DISCNN_BEFORE_ACCEPT_ (err))
|
||||||
return MHD_SC_ACCEPT_FAST_DISCONNECT; /* do not print error if client just disconnected early */
|
return MHD_SC_ACCEPT_FAST_DISCONNECT; /* do not print error if client just disconnected early */
|
||||||
if (MHD_SCKT_ERR_IS_EAGAIN_ (err) )
|
if (MHD_SCKT_ERR_IS_EAGAIN_ (err) )
|
||||||
|
|||||||
@@ -90,10 +90,10 @@ MHD_update_last_activity_ (struct MHD_Connection *connection)
|
|||||||
struct MHD_Daemon *daemon = connection->daemon;
|
struct MHD_Daemon *daemon = connection->daemon;
|
||||||
|
|
||||||
if (0 == connection->connection_timeout)
|
if (0 == connection->connection_timeout)
|
||||||
return; /* Skip update of activity for connections
|
return; /* Skip update of activity for connections
|
||||||
without timeout timer. */
|
without timeout timer. */
|
||||||
if (connection->suspended)
|
if (connection->suspended)
|
||||||
return; /* no activity on suspended connections */
|
return; /* no activity on suspended connections */
|
||||||
|
|
||||||
connection->last_activity = MHD_monotonic_sec_counter ();
|
connection->last_activity = MHD_monotonic_sec_counter ();
|
||||||
if (MHD_TM_THREAD_PER_CONNECTION == daemon->threading_mode)
|
if (MHD_TM_THREAD_PER_CONNECTION == daemon->threading_mode)
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ MHD_connection_update_last_activity_ (struct MHD_Connection *connection)
|
|||||||
struct MHD_Daemon *daemon = connection->daemon;
|
struct MHD_Daemon *daemon = connection->daemon;
|
||||||
|
|
||||||
if (0 == connection->connection_timeout)
|
if (0 == connection->connection_timeout)
|
||||||
return; /* Skip update of activity for connections
|
return; /* Skip update of activity for connections
|
||||||
without timeout timer. */
|
without timeout timer. */
|
||||||
if (connection->suspended)
|
if (connection->suspended)
|
||||||
return; /* no activity on suspended connections */
|
return; /* no activity on suspended connections */
|
||||||
|
|
||||||
connection->last_activity = MHD_monotonic_sec_counter ();
|
connection->last_activity = MHD_monotonic_sec_counter ();
|
||||||
if (MHD_TM_THREAD_PER_CONNECTION == daemon->threading_mode)
|
if (MHD_TM_THREAD_PER_CONNECTION == daemon->threading_mode)
|
||||||
|
|||||||
@@ -294,9 +294,9 @@ MHD_daemon_poll_all_ (struct MHD_Daemon *daemon,
|
|||||||
prev = pos->prev;
|
prev = pos->prev;
|
||||||
/* first, sanity checks */
|
/* first, sanity checks */
|
||||||
if (i >= num_connections)
|
if (i >= num_connections)
|
||||||
break; /* connection list changed somehow, retry later ... */
|
break; /* connection list changed somehow, retry later ... */
|
||||||
if (p[poll_server + i].fd != pos->socket_fd)
|
if (p[poll_server + i].fd != pos->socket_fd)
|
||||||
continue; /* fd mismatch, something else happened, retry later ... */
|
continue; /* fd mismatch, something else happened, retry later ... */
|
||||||
MHD_connection_call_handlers_ (pos,
|
MHD_connection_call_handlers_ (pos,
|
||||||
0 != (p[poll_server + i].revents & POLLIN),
|
0 != (p[poll_server + i].revents & POLLIN),
|
||||||
0 != (p[poll_server + i].revents
|
0 != (p[poll_server + i].revents
|
||||||
|
|||||||
@@ -67,11 +67,11 @@ configure_listen_reuse (struct MHD_Daemon *daemon)
|
|||||||
}
|
}
|
||||||
return MHD_SC_OK;
|
return MHD_SC_OK;
|
||||||
#endif /* ! MHD_WINSOCK_SOCKETS */
|
#endif /* ! MHD_WINSOCK_SOCKETS */
|
||||||
/* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
|
/* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
|
||||||
* Fail if SO_REUSEPORT is not defined or setsockopt fails.
|
* Fail if SO_REUSEPORT is not defined or setsockopt fails.
|
||||||
*/
|
*/
|
||||||
/* SO_REUSEADDR on W32 has the same semantics
|
/* SO_REUSEADDR on W32 has the same semantics
|
||||||
as SO_REUSEPORT on BSD/Linux */
|
as SO_REUSEPORT on BSD/Linux */
|
||||||
#if defined(MHD_WINSOCK_SOCKETS) || defined(SO_REUSEPORT)
|
#if defined(MHD_WINSOCK_SOCKETS) || defined(SO_REUSEPORT)
|
||||||
if (0 > setsockopt (daemon->listen_socket,
|
if (0 > setsockopt (daemon->listen_socket,
|
||||||
SOL_SOCKET,
|
SOL_SOCKET,
|
||||||
@@ -93,8 +93,8 @@ configure_listen_reuse (struct MHD_Daemon *daemon)
|
|||||||
}
|
}
|
||||||
return MHD_SC_OK;
|
return MHD_SC_OK;
|
||||||
#else /* !MHD_WINSOCK_SOCKETS && !SO_REUSEPORT */
|
#else /* !MHD_WINSOCK_SOCKETS && !SO_REUSEPORT */
|
||||||
/* we're supposed to allow address:port re-use, but
|
/* we're supposed to allow address:port re-use, but
|
||||||
on this platform we cannot; fail hard */
|
on this platform we cannot; fail hard */
|
||||||
#ifdef HAVE_MESSAGES
|
#ifdef HAVE_MESSAGES
|
||||||
MHD_DLOG (daemon,
|
MHD_DLOG (daemon,
|
||||||
MHD_SC_LISTEN_ADDRESS_REUSE_ENABLE_NOT_SUPPORTED,
|
MHD_SC_LISTEN_ADDRESS_REUSE_ENABLE_NOT_SUPPORTED,
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
struct MD5Context
|
struct MD5Context
|
||||||
{
|
{
|
||||||
uint32_t state[4]; /* state */
|
uint32_t state[4]; /* state */
|
||||||
uint64_t count; /* number of bits, mod 2^64 */
|
uint64_t count; /* number of bits, mod 2^64 */
|
||||||
uint8_t buffer[MD5_BLOCK_SIZE]; /* input buffer */
|
uint8_t buffer[MD5_BLOCK_SIZE]; /* input buffer */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -254,8 +254,8 @@ MHD_monotonic_sec_counter_init (void)
|
|||||||
LARGE_INTEGER freq;
|
LARGE_INTEGER freq;
|
||||||
LARGE_INTEGER perf_counter;
|
LARGE_INTEGER perf_counter;
|
||||||
|
|
||||||
QueryPerformanceFrequency (&freq); /* never fail on XP and later */
|
QueryPerformanceFrequency (&freq); /* never fail on XP and later */
|
||||||
QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
|
QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
|
||||||
perf_freq = freq.QuadPart;
|
perf_freq = freq.QuadPart;
|
||||||
perf_start = perf_counter.QuadPart;
|
perf_start = perf_counter.QuadPart;
|
||||||
mono_clock_source = _MHD_CLOCK_PERFCOUNTER;
|
mono_clock_source = _MHD_CLOCK_PERFCOUNTER;
|
||||||
|
|||||||
@@ -49,7 +49,8 @@
|
|||||||
#if defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || \
|
#if defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || \
|
||||||
defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI)
|
defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI)
|
||||||
# define MHD_USE_THREAD_ATTR_SETNAME 1
|
# define MHD_USE_THREAD_ATTR_SETNAME 1
|
||||||
#endif /* HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD || HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI */
|
#endif \
|
||||||
|
/* HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD || HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI */
|
||||||
|
|
||||||
#if defined(HAVE_PTHREAD_SETNAME_NP_GNU) || \
|
#if defined(HAVE_PTHREAD_SETNAME_NP_GNU) || \
|
||||||
defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) \
|
defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) \
|
||||||
|
|||||||
+14
-14
@@ -24,7 +24,7 @@ typedef struct node
|
|||||||
/* $NetBSD: tsearch.c,v 1.5 2005/11/29 03:12:00 christos Exp $ */
|
/* $NetBSD: tsearch.c,v 1.5 2005/11/29 03:12:00 christos Exp $ */
|
||||||
/* find or insert datum into search tree */
|
/* find or insert datum into search tree */
|
||||||
void *
|
void *
|
||||||
tsearch (const void *vkey, /* key to be located */
|
tsearch (const void *vkey, /* key to be located */
|
||||||
void **vrootp, /* address of tree root */
|
void **vrootp, /* address of tree root */
|
||||||
int (*compar)(const void *, const void *))
|
int (*compar)(const void *, const void *))
|
||||||
{
|
{
|
||||||
@@ -38,19 +38,19 @@ tsearch (const void *vkey, /* key to be located */
|
|||||||
{ /* Knuth's T1: */
|
{ /* Knuth's T1: */
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
||||||
return *rootp; /* we found it! */
|
return *rootp; /* we found it! */
|
||||||
|
|
||||||
rootp = (r < 0) ?
|
rootp = (r < 0) ?
|
||||||
&(*rootp)->llink : /* T3: follow left branch */
|
&(*rootp)->llink : /* T3: follow left branch */
|
||||||
&(*rootp)->rlink; /* T4: follow right branch */
|
&(*rootp)->rlink; /* T4: follow right branch */
|
||||||
}
|
}
|
||||||
|
|
||||||
q = malloc (sizeof(node_t)); /* T5: key not found */
|
q = malloc (sizeof(node_t)); /* T5: key not found */
|
||||||
if (q)
|
if (q)
|
||||||
{ /* make new node */
|
{ /* make new node */
|
||||||
*rootp = q; /* link new node to old */
|
*rootp = q; /* link new node to old */
|
||||||
q->key = vkey; /* initialize new node */
|
q->key = vkey; /* initialize new node */
|
||||||
q->llink = q->rlink = NULL;
|
q->llink = q->rlink = NULL;
|
||||||
}
|
}
|
||||||
return q;
|
return q;
|
||||||
@@ -73,8 +73,8 @@ tfind (const void *vkey, /* key to be found */
|
|||||||
{ /* T1: */
|
{ /* T1: */
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
||||||
return *rootp; /* key found */
|
return *rootp; /* key found */
|
||||||
rootp = (r < 0) ?
|
rootp = (r < 0) ?
|
||||||
&(*rootp)->llink : /* T3: follow left branch */
|
&(*rootp)->llink : /* T3: follow left branch */
|
||||||
&(*rootp)->rlink; /* T4: follow right branch */
|
&(*rootp)->rlink; /* T4: follow right branch */
|
||||||
@@ -112,17 +112,17 @@ tdelete (const void *__restrict vkey,
|
|||||||
&(*rootp)->llink : /* follow llink branch */
|
&(*rootp)->llink : /* follow llink branch */
|
||||||
&(*rootp)->rlink; /* follow rlink branch */
|
&(*rootp)->rlink; /* follow rlink branch */
|
||||||
if (*rootp == NULL)
|
if (*rootp == NULL)
|
||||||
return NULL; /* key not found */
|
return NULL; /* key not found */
|
||||||
}
|
}
|
||||||
r = (*rootp)->rlink; /* D1: */
|
r = (*rootp)->rlink; /* D1: */
|
||||||
if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
|
if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
|
||||||
{
|
{
|
||||||
q = r;
|
q = r;
|
||||||
}
|
}
|
||||||
else if (r != NULL)
|
else if (r != NULL)
|
||||||
{ /* Right link is NULL? */
|
{ /* Right link is NULL? */
|
||||||
if (r->llink == NULL)
|
if (r->llink == NULL)
|
||||||
{ /* D2: Find successor */
|
{ /* D2: Find successor */
|
||||||
r->llink = q;
|
r->llink = q;
|
||||||
q = r;
|
q = r;
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,7 @@ tdelete (const void *__restrict vkey,
|
|||||||
q->rlink = (*rootp)->rlink;
|
q->rlink = (*rootp)->rlink;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free (*rootp); /* D4: Free node */
|
free (*rootp); /* D4: Free node */
|
||||||
*rootp = q; /* link parent to new node */
|
*rootp = q; /* link parent to new node */
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-14
@@ -115,7 +115,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sendfile() chuck size
|
* sendfile() chuck size
|
||||||
*/
|
*/
|
||||||
@@ -250,9 +249,9 @@ MHD_get_connection_values (struct MHD_Connection *connection,
|
|||||||
ret++;
|
ret++;
|
||||||
if ( (NULL != iterator) &&
|
if ( (NULL != iterator) &&
|
||||||
(MHD_NO == iterator (iterator_cls,
|
(MHD_NO == iterator (iterator_cls,
|
||||||
pos->kind,
|
pos->kind,
|
||||||
pos->header,
|
pos->header,
|
||||||
pos->value)) )
|
pos->value)) )
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -764,7 +763,8 @@ MHD_connection_finish_forward_ (struct MHD_Connection *connection)
|
|||||||
* used with MHD_UPGRADE_ACTION_CLOSE. They will be
|
* used with MHD_UPGRADE_ACTION_CLOSE. They will be
|
||||||
* closed by MHD_cleanup_upgraded_connection_() during
|
* closed by MHD_cleanup_upgraded_connection_() during
|
||||||
* connection's final cleanup.
|
* connection's final cleanup.
|
||||||
*/}
|
*///
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* HTTPS_SUPPORT && UPGRADE_SUPPORT*/
|
#endif /* HTTPS_SUPPORT && UPGRADE_SUPPORT*/
|
||||||
@@ -1141,18 +1141,18 @@ try_grow_read_buffer (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
avail_size = MHD_pool_get_free (connection->pool);
|
avail_size = MHD_pool_get_free (connection->pool);
|
||||||
if (0 == avail_size)
|
if (0 == avail_size)
|
||||||
return false; /* No more space available */
|
return false; /* No more space available */
|
||||||
if (0 == connection->read_buffer_size)
|
if (0 == connection->read_buffer_size)
|
||||||
new_size = avail_size / 2; /* Use half of available buffer for reading */
|
new_size = avail_size / 2; /* Use half of available buffer for reading */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
size_t grow_size;
|
size_t grow_size;
|
||||||
|
|
||||||
grow_size = avail_size / 8;
|
grow_size = avail_size / 8;
|
||||||
if (MHD_BUF_INC_SIZE > grow_size)
|
if (MHD_BUF_INC_SIZE > grow_size)
|
||||||
{ /* Shortage of space */
|
{ /* Shortage of space */
|
||||||
if (! required)
|
if (! required)
|
||||||
return false; /* Grow is not mandatory, leave some space in pool */
|
return false; /* Grow is not mandatory, leave some space in pool */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Shortage of space, but grow is mandatory */
|
/* Shortage of space, but grow is mandatory */
|
||||||
@@ -1403,7 +1403,8 @@ build_header_response (struct MHD_Connection *connection)
|
|||||||
|
|
||||||
Note that the change from 'SHOULD NOT' to 'MUST NOT' is
|
Note that the change from 'SHOULD NOT' to 'MUST NOT' is
|
||||||
a recent development of the HTTP 1.1 specification.
|
a recent development of the HTTP 1.1 specification.
|
||||||
*/content_length_len
|
*///
|
||||||
|
content_length_len
|
||||||
= MHD_snprintf_ (content_length_buf,
|
= MHD_snprintf_ (content_length_buf,
|
||||||
sizeof (content_length_buf),
|
sizeof (content_length_buf),
|
||||||
MHD_HTTP_HEADER_CONTENT_LENGTH ": "
|
MHD_HTTP_HEADER_CONTENT_LENGTH ": "
|
||||||
@@ -2438,8 +2439,9 @@ static enum MHD_Result
|
|||||||
check_write_done (struct MHD_Connection *connection,
|
check_write_done (struct MHD_Connection *connection,
|
||||||
enum MHD_CONNECTION_STATE next_state)
|
enum MHD_CONNECTION_STATE next_state)
|
||||||
{
|
{
|
||||||
if (connection->write_buffer_append_offset !=
|
if ( (connection->write_buffer_append_offset !=
|
||||||
connection->write_buffer_send_offset)
|
connection->write_buffer_send_offset) ||
|
||||||
|
(connection->sk_cork_on) )
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
connection->write_buffer_append_offset = 0;
|
connection->write_buffer_append_offset = 0;
|
||||||
connection->write_buffer_send_offset = 0;
|
connection->write_buffer_send_offset = 0;
|
||||||
@@ -2722,10 +2724,10 @@ MHD_update_last_activity_ (struct MHD_Connection *connection)
|
|||||||
struct MHD_Daemon *daemon = connection->daemon;
|
struct MHD_Daemon *daemon = connection->daemon;
|
||||||
|
|
||||||
if (0 == connection->connection_timeout)
|
if (0 == connection->connection_timeout)
|
||||||
return; /* Skip update of activity for connections
|
return; /* Skip update of activity for connections
|
||||||
without timeout timer. */
|
without timeout timer. */
|
||||||
if (connection->suspended)
|
if (connection->suspended)
|
||||||
return; /* no activity on suspended connections */
|
return; /* no activity on suspended connections */
|
||||||
|
|
||||||
connection->last_activity = MHD_monotonic_sec_counter ();
|
connection->last_activity = MHD_monotonic_sec_counter ();
|
||||||
if (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION))
|
if (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION))
|
||||||
|
|||||||
+84
-75
@@ -1333,6 +1333,7 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
|
|||||||
* this function. If 'was_closed' changed externally in the middle
|
* this function. If 'was_closed' changed externally in the middle
|
||||||
* of processing - it will be processed on next iteration. */
|
* of processing - it will be processed on next iteration. */
|
||||||
bool was_closed;
|
bool was_closed;
|
||||||
|
|
||||||
if (daemon->shutdown)
|
if (daemon->shutdown)
|
||||||
{
|
{
|
||||||
/* Daemon shutting down, application will not receive any more data. */
|
/* Daemon shutting down, application will not receive any more data. */
|
||||||
@@ -1355,10 +1356,9 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
|
|||||||
{
|
{
|
||||||
#ifdef HAVE_MESSAGES
|
#ifdef HAVE_MESSAGES
|
||||||
MHD_DLOG (daemon,
|
MHD_DLOG (daemon,
|
||||||
_ (
|
_ ("Failed to forward to application "
|
||||||
"Failed to forward to application "
|
MHD_UNSIGNED_LONG_LONG_PRINTF \
|
||||||
MHD_UNSIGNED_LONG_LONG_PRINTF \
|
" bytes of data received from remote side: application shut down socket.\n"),
|
||||||
" bytes of data received from remote side: application shut down socket.\n"),
|
|
||||||
(MHD_UNSIGNED_LONG_LONG) urh->in_buffer_used);
|
(MHD_UNSIGNED_LONG_LONG) urh->in_buffer_used);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1367,7 +1367,8 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
|
|||||||
* check for any pending data even if socket is not marked
|
* check for any pending data even if socket is not marked
|
||||||
* as 'ready' (signal may arrive after poll()/select()).
|
* as 'ready' (signal may arrive after poll()/select()).
|
||||||
* Socketpair for forwarding is always in non-blocking mode
|
* Socketpair for forwarding is always in non-blocking mode
|
||||||
* so no risk that recv() will block the thread. */if (0 != urh->out_buffer_size)
|
* so no risk that recv() will block the thread. *///
|
||||||
|
if (0 != urh->out_buffer_size)
|
||||||
urh->mhd.celi |= MHD_EPOLL_STATE_READ_READY;
|
urh->mhd.celi |= MHD_EPOLL_STATE_READ_READY;
|
||||||
/* Discard any data received form remote. */
|
/* Discard any data received form remote. */
|
||||||
urh->in_buffer_used = 0;
|
urh->in_buffer_used = 0;
|
||||||
@@ -1379,12 +1380,14 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
|
|||||||
connection->tls_read_ready = false;
|
connection->tls_read_ready = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* On some platforms (W32, possibly Darwin) failed send() (send() will always
|
/* On some platforms (W32, possibly Darwin) failed send() (send() will
|
||||||
* fail after remote disconnect was detected) may discard data in system
|
* always fail after remote disconnect was detected) may discard data in
|
||||||
* buffers received by system but not yet read by recv().
|
* system buffers received by system but not yet read by recv(). So, before
|
||||||
* So, before trying send() on any socket, recv() must be performed at first
|
* trying send() on any socket, recv() must be performed at first otherwise
|
||||||
* otherwise last part of incoming data may be lost. *//* If disconnect or error was detected - try to read from socket
|
* last part of incoming data may be lost. If disconnect or error was
|
||||||
* to dry data possibly pending is system buffers. */if (0 != (MHD_EPOLL_STATE_ERROR & urh->app.celi))
|
* detected - try to read from socket to dry data possibly pending is system
|
||||||
|
* buffers. *///
|
||||||
|
if (0 != (MHD_EPOLL_STATE_ERROR & urh->app.celi))
|
||||||
urh->app.celi |= MHD_EPOLL_STATE_READ_READY;
|
urh->app.celi |= MHD_EPOLL_STATE_READ_READY;
|
||||||
if (0 != (MHD_EPOLL_STATE_ERROR & urh->mhd.celi))
|
if (0 != (MHD_EPOLL_STATE_ERROR & urh->mhd.celi))
|
||||||
urh->mhd.celi |= MHD_EPOLL_STATE_READ_READY;
|
urh->mhd.celi |= MHD_EPOLL_STATE_READ_READY;
|
||||||
@@ -1424,10 +1427,10 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
|
|||||||
else /* 0 < res */
|
else /* 0 < res */
|
||||||
{
|
{
|
||||||
urh->in_buffer_used += res;
|
urh->in_buffer_used += res;
|
||||||
if (buf_size > (size_t) res)
|
if (0 < gnutls_record_check_pending (connection->tls_session))
|
||||||
urh->app.celi &= ~MHD_EPOLL_STATE_READ_READY;
|
{
|
||||||
else if (0 < gnutls_record_check_pending (connection->tls_session))
|
|
||||||
connection->tls_read_ready = true;
|
connection->tls_read_ready = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (MHD_EPOLL_STATE_ERROR ==
|
if (MHD_EPOLL_STATE_ERROR ==
|
||||||
((MHD_EPOLL_STATE_ERROR | MHD_EPOLL_STATE_READ_READY) & urh->app.celi))
|
((MHD_EPOLL_STATE_ERROR | MHD_EPOLL_STATE_READ_READY) & urh->app.celi))
|
||||||
@@ -1932,8 +1935,8 @@ thread_main_handle_connection (void *data)
|
|||||||
}
|
}
|
||||||
#endif /* HAVE_POLL */
|
#endif /* HAVE_POLL */
|
||||||
MHD_itc_clear_ (daemon->itc);
|
MHD_itc_clear_ (daemon->itc);
|
||||||
continue; /* Check again for resume. */
|
continue; /* Check again for resume. */
|
||||||
} /* End of "suspended" branch. */
|
} /* End of "suspended" branch. */
|
||||||
|
|
||||||
if (was_suspended)
|
if (was_suspended)
|
||||||
{
|
{
|
||||||
@@ -2228,7 +2231,8 @@ MHD_cleanup_connections (struct MHD_Daemon *daemon);
|
|||||||
* and if possible.
|
* and if possible.
|
||||||
*/
|
*/
|
||||||
#define MHD_TLSLIB_NEED_PUSH_FUNC 1
|
#define MHD_TLSLIB_NEED_PUSH_FUNC 1
|
||||||
#endif /* !MHD_WINSOCK_SOCKETS && !MHD_socket_nosignal_ && (GNUTLS_VERSION_NUMBER+0 < 0x030402) */
|
#endif \
|
||||||
|
/* !MHD_WINSOCK_SOCKETS && !MHD_socket_nosignal_ && (GNUTLS_VERSION_NUMBER+0 < 0x030402) */
|
||||||
|
|
||||||
#ifdef MHD_TLSLIB_NEED_PUSH_FUNC
|
#ifdef MHD_TLSLIB_NEED_PUSH_FUNC
|
||||||
/**
|
/**
|
||||||
@@ -3379,7 +3383,8 @@ MHD_cleanup_connections (struct MHD_Daemon *daemon)
|
|||||||
this is not true as if we fail to do manually remove it,
|
this is not true as if we fail to do manually remove it,
|
||||||
we are still seeing an event for this fd in epoll,
|
we are still seeing an event for this fd in epoll,
|
||||||
causing grief (use-after-free...) --- at least on my
|
causing grief (use-after-free...) --- at least on my
|
||||||
system. */if (0 != epoll_ctl (daemon->epoll_fd,
|
system. *///
|
||||||
|
if (0 != epoll_ctl (daemon->epoll_fd,
|
||||||
EPOLL_CTL_DEL,
|
EPOLL_CTL_DEL,
|
||||||
pos->socket_fd,
|
pos->socket_fd,
|
||||||
NULL))
|
NULL))
|
||||||
@@ -3831,9 +3836,9 @@ MHD_select (struct MHD_Daemon *daemon,
|
|||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
if (MHD_NO != internal_run_from_select (daemon,
|
if (MHD_NO != internal_run_from_select (daemon,
|
||||||
&rs,
|
&rs,
|
||||||
&ws,
|
&ws,
|
||||||
&es))
|
&es))
|
||||||
return (MHD_NO == err_state) ? MHD_YES : MHD_NO;
|
return (MHD_NO == err_state) ? MHD_YES : MHD_NO;
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
@@ -3920,7 +3925,7 @@ MHD_poll_all (struct MHD_Daemon *daemon,
|
|||||||
timeout = 0;
|
timeout = 0;
|
||||||
else if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) ||
|
else if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) ||
|
||||||
(MHD_NO == MHD_get_timeout (daemon,
|
(MHD_NO == MHD_get_timeout (daemon,
|
||||||
<imeout)) )
|
<imeout)) )
|
||||||
timeout = -1;
|
timeout = -1;
|
||||||
else
|
else
|
||||||
timeout = (ltimeout > INT_MAX) ? INT_MAX : (int) ltimeout;
|
timeout = (ltimeout > INT_MAX) ? INT_MAX : (int) ltimeout;
|
||||||
@@ -4000,9 +4005,9 @@ MHD_poll_all (struct MHD_Daemon *daemon,
|
|||||||
prev = pos->prev;
|
prev = pos->prev;
|
||||||
/* first, sanity checks */
|
/* first, sanity checks */
|
||||||
if (i >= num_connections)
|
if (i >= num_connections)
|
||||||
break; /* connection list changed somehow, retry later ... */
|
break; /* connection list changed somehow, retry later ... */
|
||||||
if (p[poll_server + i].fd != pos->socket_fd)
|
if (p[poll_server + i].fd != pos->socket_fd)
|
||||||
continue; /* fd mismatch, something else happened, retry later ... */
|
continue; /* fd mismatch, something else happened, retry later ... */
|
||||||
call_handlers (pos,
|
call_handlers (pos,
|
||||||
0 != (p[poll_server + i].revents & POLLIN),
|
0 != (p[poll_server + i].revents & POLLIN),
|
||||||
0 != (p[poll_server + i].revents & POLLOUT),
|
0 != (p[poll_server + i].revents & POLLOUT),
|
||||||
@@ -4267,22 +4272,26 @@ run_epoll_for_upgrade (struct MHD_Daemon *daemon)
|
|||||||
|
|
||||||
/* Update ueh state based on what is ready according to epoll() */
|
/* Update ueh state based on what is ready according to epoll() */
|
||||||
if (0 != (events[i].events & EPOLLIN))
|
if (0 != (events[i].events & EPOLLIN))
|
||||||
|
{
|
||||||
ueh->celi |= MHD_EPOLL_STATE_READ_READY;
|
ueh->celi |= MHD_EPOLL_STATE_READ_READY;
|
||||||
|
}
|
||||||
if (0 != (events[i].events & EPOLLOUT))
|
if (0 != (events[i].events & EPOLLOUT))
|
||||||
|
{
|
||||||
ueh->celi |= MHD_EPOLL_STATE_WRITE_READY;
|
ueh->celi |= MHD_EPOLL_STATE_WRITE_READY;
|
||||||
|
}
|
||||||
if (0 != (events[i].events & EPOLLHUP))
|
if (0 != (events[i].events & EPOLLHUP))
|
||||||
|
{
|
||||||
ueh->celi |= MHD_EPOLL_STATE_READ_READY | MHD_EPOLL_STATE_WRITE_READY;
|
ueh->celi |= MHD_EPOLL_STATE_READ_READY | MHD_EPOLL_STATE_WRITE_READY;
|
||||||
|
}
|
||||||
|
|
||||||
if ( (0 == (ueh->celi & MHD_EPOLL_STATE_ERROR)) &&
|
if ( (0 == (ueh->celi & MHD_EPOLL_STATE_ERROR)) &&
|
||||||
(0 != (events[i].events & (EPOLLERR | EPOLLPRI))) )
|
(0 != (events[i].events & (EPOLLERR | EPOLLPRI))) )
|
||||||
{
|
{
|
||||||
/* Process new error state only one time
|
/* Process new error state only one time and avoid continuously
|
||||||
* and avoid continuously marking this connection
|
* marking this connection as 'ready'. */
|
||||||
* as 'ready'. */
|
|
||||||
ueh->celi |= MHD_EPOLL_STATE_ERROR;
|
ueh->celi |= MHD_EPOLL_STATE_ERROR;
|
||||||
new_err_state = true;
|
new_err_state = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! urh->in_eready_list)
|
if (! urh->in_eready_list)
|
||||||
{
|
{
|
||||||
if (new_err_state ||
|
if (new_err_state ||
|
||||||
@@ -4447,7 +4456,7 @@ MHD_epoll (struct MHD_Daemon *daemon,
|
|||||||
if (MHD_NO != may_block)
|
if (MHD_NO != may_block)
|
||||||
{
|
{
|
||||||
if (MHD_NO != MHD_get_timeout (daemon,
|
if (MHD_NO != MHD_get_timeout (daemon,
|
||||||
&timeout_ll))
|
&timeout_ll))
|
||||||
{
|
{
|
||||||
if (timeout_ll >= (MHD_UNSIGNED_LONG_LONG) INT_MAX)
|
if (timeout_ll >= (MHD_UNSIGNED_LONG_LONG) INT_MAX)
|
||||||
timeout_ms = INT_MAX;
|
timeout_ms = INT_MAX;
|
||||||
@@ -5406,10 +5415,10 @@ parse_options_va (struct MHD_Daemon *daemon,
|
|||||||
case MHD_OPTION_CONNECTION_MEMORY_INCREMENT:
|
case MHD_OPTION_CONNECTION_MEMORY_INCREMENT:
|
||||||
case MHD_OPTION_THREAD_STACK_SIZE:
|
case MHD_OPTION_THREAD_STACK_SIZE:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
(size_t) oa[i].value,
|
(size_t) oa[i].value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
/* all options taking 'unsigned int' */
|
/* all options taking 'unsigned int' */
|
||||||
@@ -5423,39 +5432,39 @@ parse_options_va (struct MHD_Daemon *daemon,
|
|||||||
case MHD_OPTION_LISTEN_BACKLOG_SIZE:
|
case MHD_OPTION_LISTEN_BACKLOG_SIZE:
|
||||||
case MHD_OPTION_SERVER_INSANITY:
|
case MHD_OPTION_SERVER_INSANITY:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
(unsigned int) oa[i].value,
|
(unsigned int) oa[i].value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
/* all options taking 'enum' */
|
/* all options taking 'enum' */
|
||||||
#ifdef HTTPS_SUPPORT
|
#ifdef HTTPS_SUPPORT
|
||||||
case MHD_OPTION_HTTPS_CRED_TYPE:
|
case MHD_OPTION_HTTPS_CRED_TYPE:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
(gnutls_credentials_type_t) oa[i].value,
|
(gnutls_credentials_type_t) oa[i].value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
#endif /* HTTPS_SUPPORT */
|
#endif /* HTTPS_SUPPORT */
|
||||||
/* all options taking 'MHD_socket' */
|
/* all options taking 'MHD_socket' */
|
||||||
case MHD_OPTION_LISTEN_SOCKET:
|
case MHD_OPTION_LISTEN_SOCKET:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
(MHD_socket) oa[i].value,
|
(MHD_socket) oa[i].value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
/* all options taking 'int' */
|
/* all options taking 'int' */
|
||||||
case MHD_OPTION_STRICT_FOR_CLIENT:
|
case MHD_OPTION_STRICT_FOR_CLIENT:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
(int) oa[i].value,
|
(int) oa[i].value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
/* all options taking one pointer */
|
/* all options taking one pointer */
|
||||||
@@ -5470,10 +5479,10 @@ parse_options_va (struct MHD_Daemon *daemon,
|
|||||||
case MHD_OPTION_HTTPS_CERT_CALLBACK:
|
case MHD_OPTION_HTTPS_CERT_CALLBACK:
|
||||||
case MHD_OPTION_HTTPS_CERT_CALLBACK2:
|
case MHD_OPTION_HTTPS_CERT_CALLBACK2:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
oa[i].ptr_value,
|
oa[i].ptr_value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
/* all options taking two pointers */
|
/* all options taking two pointers */
|
||||||
@@ -5484,21 +5493,21 @@ parse_options_va (struct MHD_Daemon *daemon,
|
|||||||
case MHD_OPTION_UNESCAPE_CALLBACK:
|
case MHD_OPTION_UNESCAPE_CALLBACK:
|
||||||
case MHD_OPTION_GNUTLS_PSK_CRED_HANDLER:
|
case MHD_OPTION_GNUTLS_PSK_CRED_HANDLER:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
(void *) oa[i].value,
|
(void *) oa[i].value,
|
||||||
oa[i].ptr_value,
|
oa[i].ptr_value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
/* options taking size_t-number followed by pointer */
|
/* options taking size_t-number followed by pointer */
|
||||||
case MHD_OPTION_DIGEST_AUTH_RANDOM:
|
case MHD_OPTION_DIGEST_AUTH_RANDOM:
|
||||||
if (MHD_NO == parse_options (daemon,
|
if (MHD_NO == parse_options (daemon,
|
||||||
servaddr,
|
servaddr,
|
||||||
opt,
|
opt,
|
||||||
(size_t) oa[i].value,
|
(size_t) oa[i].value,
|
||||||
oa[i].ptr_value,
|
oa[i].ptr_value,
|
||||||
MHD_OPTION_END))
|
MHD_OPTION_END))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -5761,7 +5770,7 @@ MHD_start_daemon_va (unsigned int flags,
|
|||||||
#ifdef HAVE_POLL
|
#ifdef HAVE_POLL
|
||||||
*pflags |= MHD_USE_POLL;
|
*pflags |= MHD_USE_POLL;
|
||||||
#else /* ! HAVE_POLL */
|
#else /* ! HAVE_POLL */
|
||||||
/* use select() - do not modify flags */
|
/* use select() - do not modify flags */
|
||||||
#endif /* ! HAVE_POLL */
|
#endif /* ! HAVE_POLL */
|
||||||
}
|
}
|
||||||
else if (0 != (*pflags & MHD_USE_INTERNAL_POLLING_THREAD))
|
else if (0 != (*pflags & MHD_USE_INTERNAL_POLLING_THREAD))
|
||||||
@@ -5772,7 +5781,7 @@ MHD_start_daemon_va (unsigned int flags,
|
|||||||
#elif defined(HAVE_POLL)
|
#elif defined(HAVE_POLL)
|
||||||
*pflags |= MHD_USE_POLL;
|
*pflags |= MHD_USE_POLL;
|
||||||
#else /* !HAVE_POLL && !EPOLL_SUPPORT */
|
#else /* !HAVE_POLL && !EPOLL_SUPPORT */
|
||||||
/* use select() - do not modify flags */
|
/* use select() - do not modify flags */
|
||||||
#endif /* !HAVE_POLL && !EPOLL_SUPPORT */
|
#endif /* !HAVE_POLL && !EPOLL_SUPPORT */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -5781,7 +5790,7 @@ MHD_start_daemon_va (unsigned int flags,
|
|||||||
#if defined(EPOLL_SUPPORT)
|
#if defined(EPOLL_SUPPORT)
|
||||||
*pflags |= MHD_USE_EPOLL;
|
*pflags |= MHD_USE_EPOLL;
|
||||||
#else /* ! EPOLL_SUPPORT */
|
#else /* ! EPOLL_SUPPORT */
|
||||||
/* use select() - do not modify flags */
|
/* use select() - do not modify flags */
|
||||||
#endif /* ! EPOLL_SUPPORT */
|
#endif /* ! EPOLL_SUPPORT */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5866,8 +5875,8 @@ MHD_start_daemon_va (unsigned int flags,
|
|||||||
|
|
||||||
|
|
||||||
if (MHD_NO == parse_options_va (daemon,
|
if (MHD_NO == parse_options_va (daemon,
|
||||||
&servaddr,
|
&servaddr,
|
||||||
ap))
|
ap))
|
||||||
{
|
{
|
||||||
#ifdef HTTPS_SUPPORT
|
#ifdef HTTPS_SUPPORT
|
||||||
if ( (0 != (*pflags & MHD_USE_TLS)) &&
|
if ( (0 != (*pflags & MHD_USE_TLS)) &&
|
||||||
@@ -6057,11 +6066,11 @@ MHD_start_daemon_va (unsigned int flags,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif /* ! MHD_WINSOCK_SOCKETS */
|
#endif /* ! MHD_WINSOCK_SOCKETS */
|
||||||
/* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
|
/* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
|
||||||
* Fail if SO_REUSEPORT is not defined or setsockopt fails.
|
* Fail if SO_REUSEPORT is not defined or setsockopt fails.
|
||||||
*/
|
*/
|
||||||
/* SO_REUSEADDR on W32 has the same semantics
|
/* SO_REUSEADDR on W32 has the same semantics
|
||||||
as SO_REUSEPORT on BSD/Linux */
|
as SO_REUSEPORT on BSD/Linux */
|
||||||
#if defined(MHD_WINSOCK_SOCKETS) || defined(SO_REUSEPORT)
|
#if defined(MHD_WINSOCK_SOCKETS) || defined(SO_REUSEPORT)
|
||||||
if (0 > setsockopt (listen_fd,
|
if (0 > setsockopt (listen_fd,
|
||||||
SOL_SOCKET,
|
SOL_SOCKET,
|
||||||
@@ -6081,8 +6090,8 @@ MHD_start_daemon_va (unsigned int flags,
|
|||||||
goto free_and_fail;
|
goto free_and_fail;
|
||||||
}
|
}
|
||||||
#else /* !MHD_WINSOCK_SOCKETS && !SO_REUSEPORT */
|
#else /* !MHD_WINSOCK_SOCKETS && !SO_REUSEPORT */
|
||||||
/* we're supposed to allow address:port re-use, but
|
/* we're supposed to allow address:port re-use, but
|
||||||
on this platform we cannot; fail hard */
|
on this platform we cannot; fail hard */
|
||||||
#ifdef HAVE_MESSAGES
|
#ifdef HAVE_MESSAGES
|
||||||
MHD_DLOG (daemon,
|
MHD_DLOG (daemon,
|
||||||
_ (
|
_ (
|
||||||
|
|||||||
@@ -604,9 +604,9 @@ check_nonce_nc (struct MHD_Connection *connection,
|
|||||||
}
|
}
|
||||||
/* Nonce is larger, shift bitmask and bump limit */
|
/* Nonce is larger, shift bitmask and bump limit */
|
||||||
if (64 > nc - nn->nc)
|
if (64 > nc - nn->nc)
|
||||||
nn->nmask <<= (nc - nn->nc); /* small jump, less than mask width */
|
nn->nmask <<= (nc - nn->nc); /* small jump, less than mask width */
|
||||||
else
|
else
|
||||||
nn->nmask = 0; /* big jump, unset all bits in the mask */
|
nn->nmask = 0; /* big jump, unset all bits in the mask */
|
||||||
nn->nc = nc;
|
nn->nc = nc;
|
||||||
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
|
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
|
||||||
MHD_mutex_unlock_chk_ (&daemon->nnc_lock);
|
MHD_mutex_unlock_chk_ (&daemon->nnc_lock);
|
||||||
|
|||||||
+20
-20
@@ -214,11 +214,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
|
|||||||
connection,
|
connection,
|
||||||
args);
|
args);
|
||||||
if (MHD_NO == cb (connection,
|
if (MHD_NO == cb (connection,
|
||||||
args,
|
args,
|
||||||
key_len,
|
key_len,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
kind))
|
kind))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
(*num_headers)++;
|
(*num_headers)++;
|
||||||
break;
|
break;
|
||||||
@@ -235,11 +235,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
|
|||||||
connection,
|
connection,
|
||||||
equals);
|
equals);
|
||||||
if (MHD_NO == cb (connection,
|
if (MHD_NO == cb (connection,
|
||||||
args,
|
args,
|
||||||
key_len,
|
key_len,
|
||||||
equals,
|
equals,
|
||||||
value_len,
|
value_len,
|
||||||
kind))
|
kind))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
(*num_headers)++;
|
(*num_headers)++;
|
||||||
break;
|
break;
|
||||||
@@ -256,11 +256,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
|
|||||||
connection,
|
connection,
|
||||||
args);
|
args);
|
||||||
if (MHD_NO == cb (connection,
|
if (MHD_NO == cb (connection,
|
||||||
args,
|
args,
|
||||||
key_len,
|
key_len,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
kind))
|
kind))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
/* continue with 'bar' */
|
/* continue with 'bar' */
|
||||||
(*num_headers)++;
|
(*num_headers)++;
|
||||||
@@ -280,11 +280,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
|
|||||||
connection,
|
connection,
|
||||||
equals);
|
equals);
|
||||||
if (MHD_NO == cb (connection,
|
if (MHD_NO == cb (connection,
|
||||||
args,
|
args,
|
||||||
key_len,
|
key_len,
|
||||||
equals,
|
equals,
|
||||||
value_len,
|
value_len,
|
||||||
kind))
|
kind))
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
(*num_headers)++;
|
(*num_headers)++;
|
||||||
args = amper;
|
args = amper;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
struct MD5Context
|
struct MD5Context
|
||||||
{
|
{
|
||||||
uint32_t state[4]; /* state */
|
uint32_t state[4]; /* state */
|
||||||
uint64_t count; /* number of bytes, mod 2^64 */
|
uint64_t count; /* number of bytes, mod 2^64 */
|
||||||
uint8_t buffer[MD5_BLOCK_SIZE]; /* input buffer */
|
uint8_t buffer[MD5_BLOCK_SIZE]; /* input buffer */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -336,10 +336,10 @@ MHD_pool_reallocate (struct MemoryPool *pool,
|
|||||||
{ /* "old" block is the last allocated block */
|
{ /* "old" block is the last allocated block */
|
||||||
const size_t new_apos = ROUND_TO_ALIGN (old_offset + new_size);
|
const size_t new_apos = ROUND_TO_ALIGN (old_offset + new_size);
|
||||||
if (! shrinking)
|
if (! shrinking)
|
||||||
{ /* Grow in-place, check for enough space. */
|
{ /* Grow in-place, check for enough space. */
|
||||||
if ( (new_apos > pool->end) ||
|
if ( (new_apos > pool->end) ||
|
||||||
(new_apos < pool->pos) ) /* Value wrap */
|
(new_apos < pool->pos) ) /* Value wrap */
|
||||||
return NULL; /* No space */
|
return NULL; /* No space */
|
||||||
}
|
}
|
||||||
/* Resized in-place */
|
/* Resized in-place */
|
||||||
pool->pos = new_apos;
|
pool->pos = new_apos;
|
||||||
|
|||||||
@@ -254,8 +254,8 @@ MHD_monotonic_sec_counter_init (void)
|
|||||||
LARGE_INTEGER freq;
|
LARGE_INTEGER freq;
|
||||||
LARGE_INTEGER perf_counter;
|
LARGE_INTEGER perf_counter;
|
||||||
|
|
||||||
QueryPerformanceFrequency (&freq); /* never fail on XP and later */
|
QueryPerformanceFrequency (&freq); /* never fail on XP and later */
|
||||||
QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
|
QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
|
||||||
perf_freq = freq.QuadPart;
|
perf_freq = freq.QuadPart;
|
||||||
perf_start = perf_counter.QuadPart;
|
perf_start = perf_counter.QuadPart;
|
||||||
mono_clock_source = _MHD_CLOCK_PERFCOUNTER;
|
mono_clock_source = _MHD_CLOCK_PERFCOUNTER;
|
||||||
|
|||||||
@@ -405,7 +405,11 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection,
|
|||||||
(0 == buffer_size) &&
|
(0 == buffer_size) &&
|
||||||
connection->sk_cork_on)
|
connection->sk_cork_on)
|
||||||
{
|
{
|
||||||
(void) gnutls_record_uncork (connection->tls_session, 0);
|
int err;
|
||||||
|
|
||||||
|
err = gnutls_record_uncork (connection->tls_session, 0);
|
||||||
|
if (0 > err)
|
||||||
|
return ret;
|
||||||
connection->sk_cork_on = false;
|
connection->sk_cork_on = false;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -434,6 +438,9 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection,
|
|||||||
msg.msg_iovlen = 2;
|
msg.msg_iovlen = 2;
|
||||||
|
|
||||||
ret = sendmsg (s, &msg, MAYBE_MSG_NOSIGNAL);
|
ret = sendmsg (s, &msg, MAYBE_MSG_NOSIGNAL);
|
||||||
|
if ( (-1 == ret) &&
|
||||||
|
(EAGAIN == errno) )
|
||||||
|
return MHD_ERR_AGAIN_;
|
||||||
}
|
}
|
||||||
#elif HAVE_WRITEV
|
#elif HAVE_WRITEV
|
||||||
{
|
{
|
||||||
@@ -441,6 +448,9 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
iovcnt = sizeof (vector) / sizeof (struct iovec);
|
iovcnt = sizeof (vector) / sizeof (struct iovec);
|
||||||
ret = writev (s, vector, iovcnt);
|
ret = writev (s, vector, iovcnt);
|
||||||
|
if ( (-1 == ret) &&
|
||||||
|
(EAGAIN == errno) )
|
||||||
|
return MHD_ERR_AGAIN_;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,8 @@
|
|||||||
#if defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || \
|
#if defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || \
|
||||||
defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI)
|
defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI)
|
||||||
# define MHD_USE_THREAD_ATTR_SETNAME 1
|
# define MHD_USE_THREAD_ATTR_SETNAME 1
|
||||||
#endif /* HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD || HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI */
|
#endif \
|
||||||
|
/* HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD || HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI */
|
||||||
|
|
||||||
#if defined(HAVE_PTHREAD_SETNAME_NP_GNU) || \
|
#if defined(HAVE_PTHREAD_SETNAME_NP_GNU) || \
|
||||||
defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) \
|
defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) \
|
||||||
|
|||||||
@@ -801,13 +801,13 @@ find_boundary (struct MHD_PostProcessor *pp,
|
|||||||
'-',
|
'-',
|
||||||
pp->buffer_pos);
|
pp->buffer_pos);
|
||||||
if (NULL == dash)
|
if (NULL == dash)
|
||||||
(*ioffptr) += pp->buffer_pos; /* skip entire buffer */
|
(*ioffptr) += pp->buffer_pos; /* skip entire buffer */
|
||||||
else if (dash == buf)
|
else if (dash == buf)
|
||||||
(*ioffptr)++; /* at least skip one byte */
|
(*ioffptr)++; /* at least skip one byte */
|
||||||
else
|
else
|
||||||
(*ioffptr) += dash - buf; /* skip to first possible boundary */
|
(*ioffptr) += dash - buf; /* skip to first possible boundary */
|
||||||
}
|
}
|
||||||
return MHD_NO; /* expected boundary */
|
return MHD_NO; /* expected boundary */
|
||||||
}
|
}
|
||||||
/* remove boundary from buffer */
|
/* remove boundary from buffer */
|
||||||
(*ioffptr) += 2 + blen;
|
(*ioffptr) += 2 + blen;
|
||||||
|
|||||||
@@ -263,9 +263,9 @@ MHD_get_response_headers (struct MHD_Response *response,
|
|||||||
numHeaders++;
|
numHeaders++;
|
||||||
if ((NULL != iterator) &&
|
if ((NULL != iterator) &&
|
||||||
(MHD_NO == iterator (iterator_cls,
|
(MHD_NO == iterator (iterator_cls,
|
||||||
pos->kind,
|
pos->kind,
|
||||||
pos->header,
|
pos->header,
|
||||||
pos->value)))
|
pos->value)))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return numHeaders;
|
return numHeaders;
|
||||||
@@ -919,7 +919,11 @@ MHD_upgrade_action (struct MHD_UpgradeResponseHandle *urh,
|
|||||||
#ifdef HTTPS_SUPPORT
|
#ifdef HTTPS_SUPPORT
|
||||||
if (0 != (daemon->options & MHD_USE_TLS) )
|
if (0 != (daemon->options & MHD_USE_TLS) )
|
||||||
{
|
{
|
||||||
gnutls_record_uncork (connection->tls_session, 0);
|
int err;
|
||||||
|
|
||||||
|
err = gnutls_record_uncork (connection->tls_session, 0);
|
||||||
|
if (0 > err)
|
||||||
|
return MHD_NO;
|
||||||
connection->sk_cork_on = false;
|
connection->sk_cork_on = false;
|
||||||
return MHD_YES;
|
return MHD_YES;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ struct sha256_ctx
|
|||||||
{
|
{
|
||||||
uint32_t H[_SHA256_DIGEST_LENGTH]; /**< Intermediate hash value / digest at end of calculation */
|
uint32_t H[_SHA256_DIGEST_LENGTH]; /**< Intermediate hash value / digest at end of calculation */
|
||||||
uint64_t count; /**< number of bytes, mod 2^64 */
|
uint64_t count; /**< number of bytes, mod 2^64 */
|
||||||
uint8_t buffer[SHA256_BLOCK_SIZE]; /**< SHA256 input data buffer */
|
uint8_t buffer[SHA256_BLOCK_SIZE]; /**< SHA256 input data buffer */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -83,9 +83,9 @@ ahc_nothing (void *cls,
|
|||||||
const char *upload_data, size_t *upload_data_size,
|
const char *upload_data, size_t *upload_data_size,
|
||||||
void **unused)
|
void **unused)
|
||||||
{
|
{
|
||||||
(void) cls; (void) connection; (void) url; /* Unused. Silent compiler warning. */
|
(void) cls; (void) connection; (void) url; /* Unused. Silent compiler warning. */
|
||||||
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ value_checker (void *cls,
|
|||||||
const char *data, uint64_t off, size_t size)
|
const char *data, uint64_t off, size_t size)
|
||||||
{
|
{
|
||||||
unsigned int *pos = cls;
|
unsigned int *pos = cls;
|
||||||
(void) kind; (void) key; (void) filename; (void) content_type; /* Unused. Silent compiler warning. */
|
(void) kind; (void) key; (void) filename; (void) content_type; /* Unused. Silent compiler warning. */
|
||||||
(void) transfer_encoding; (void) data; (void) off; /* Unused. Silent compiler warning. */
|
(void) transfer_encoding; (void) data; (void) off; /* Unused. Silent compiler warning. */
|
||||||
#if 0
|
#if 0
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
|
|||||||
@@ -44,9 +44,9 @@ ahc_echo (void *cls,
|
|||||||
const char *upload_data, size_t *upload_data_size,
|
const char *upload_data, size_t *upload_data_size,
|
||||||
void **unused)
|
void **unused)
|
||||||
{
|
{
|
||||||
(void) cls; (void) connection; (void) url; /* Unused. Silent compiler warning. */
|
(void) cls; (void) connection; (void) url; /* Unused. Silent compiler warning. */
|
||||||
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
|||||||
+70
-70
@@ -50,9 +50,9 @@ static const char *const locale_names[] = {
|
|||||||
"C",
|
"C",
|
||||||
"", /* System default locale */
|
"", /* System default locale */
|
||||||
#if defined(_WIN32) && ! defined(__CYGWIN__)
|
#if defined(_WIN32) && ! defined(__CYGWIN__)
|
||||||
".OCP", /* W32 system default OEM code page */
|
".OCP", /* W32 system default OEM code page */
|
||||||
".ACP", /* W32 system default ANSI code page */
|
".ACP", /* W32 system default ANSI code page */
|
||||||
".65001", /* UTF-8 */
|
".65001", /* UTF-8 */
|
||||||
".437",
|
".437",
|
||||||
".850",
|
".850",
|
||||||
".857",
|
".857",
|
||||||
@@ -455,50 +455,50 @@ static const struct two_neq_strs neq_strings[] = {
|
|||||||
{D_STR_W_LEN ("zyxwvutsrqponwMLKJIHGFEDCBA"), D_STR_W_LEN (
|
{D_STR_W_LEN ("zyxwvutsrqponwMLKJIHGFEDCBA"), D_STR_W_LEN (
|
||||||
"ZYXWVUTSRQPON%mlkjihgfedcba"), 13},
|
"ZYXWVUTSRQPON%mlkjihgfedcba"), 13},
|
||||||
|
|
||||||
{D_STR_W_LEN ("S\xbdur veulent plus d'\xbdufs."), /* "Sœur veulent plus d'œufs." in ISO-8859-15 */
|
{D_STR_W_LEN ("S\xbdur veulent plus d'\xbdufs."), /* "Sœur veulent plus d'œufs." in ISO-8859-15 */
|
||||||
D_STR_W_LEN ("S\xbcUR VEULENT PLUS D'\xbcUFS."), 1}, /* "SŒUR VEULENT PLUS D'ŒUFS." in ISO-8859-15 */
|
D_STR_W_LEN ("S\xbcUR VEULENT PLUS D'\xbcUFS."), 1}, /* "SŒUR VEULENT PLUS D'ŒUFS." in ISO-8859-15 */
|
||||||
{D_STR_W_LEN ("S\x9cur veulent plus d'\x9cufs."), /* "Sœur veulent plus d'œufs." in CP1252 */
|
{D_STR_W_LEN ("S\x9cur veulent plus d'\x9cufs."), /* "Sœur veulent plus d'œufs." in CP1252 */
|
||||||
D_STR_W_LEN ("S\x8cUR VEULENT PLUS D'\x8cUFS."), 1}, /* "SŒUR VEULENT PLUS D'ŒUFS." in CP1252 */
|
D_STR_W_LEN ("S\x8cUR VEULENT PLUS D'\x8cUFS."), 1}, /* "SŒUR VEULENT PLUS D'ŒUFS." in CP1252 */
|
||||||
{D_STR_W_LEN ("S\xc5\x93ur veulent plus d'\xc5\x93ufs."), /* "Sœur veulent plus d'œufs." in UTF-8 */
|
{D_STR_W_LEN ("S\xc5\x93ur veulent plus d'\xc5\x93ufs."), /* "Sœur veulent plus d'œufs." in UTF-8 */
|
||||||
D_STR_W_LEN ("S\xc5\x92UR VEULENT PLUS D'\xc5\x92UFS."), 2}, /* "SŒUR VEULENT PLUS D'ŒUFS." in UTF-8 */
|
D_STR_W_LEN ("S\xc5\x92UR VEULENT PLUS D'\xc5\x92UFS."), 2}, /* "SŒUR VEULENT PLUS D'ŒUFS." in UTF-8 */
|
||||||
|
|
||||||
{D_STR_W_LEN ("Um ein sch\x94nes M\x84" "dchen zu k\x81ssen."), /* "Um ein schönes Mädchen zu küssen." in CP850 */
|
{D_STR_W_LEN ("Um ein sch\x94nes M\x84" "dchen zu k\x81ssen."), /* "Um ein schönes Mädchen zu küssen." in CP850 */
|
||||||
D_STR_W_LEN ("UM EIN SCH\x99NES M\x8e" "DCHEN ZU K\x9aSSEN."), 10}, /* "UM EIN SCHÖNES MÄDCHEN ZU KÜSSEN." in CP850 */
|
D_STR_W_LEN ("UM EIN SCH\x99NES M\x8e" "DCHEN ZU K\x9aSSEN."), 10}, /* "UM EIN SCHÖNES MÄDCHEN ZU KÜSSEN." in CP850 */
|
||||||
{D_STR_W_LEN ("Um ein sch\xf6nes M\xe4" "dchen zu k\xfcssen."), /* "Um ein schönes Mädchen zu küssen." in ISO-8859-1/ISO-8859-15/CP1250/CP1252 */
|
{D_STR_W_LEN ("Um ein sch\xf6nes M\xe4" "dchen zu k\xfcssen."), /* "Um ein schönes Mädchen zu küssen." in ISO-8859-1/ISO-8859-15/CP1250/CP1252 */
|
||||||
D_STR_W_LEN ("UM EIN SCH\xd6NES M\xc4" "DCHEN ZU K\xdcSSEN."), 10}, /* "UM EIN SCHÖNES MÄDCHEN ZU KÜSSEN." in ISO-8859-1/ISO-8859-15/CP1250/CP1252 */
|
D_STR_W_LEN ("UM EIN SCH\xd6NES M\xc4" "DCHEN ZU K\xdcSSEN."), 10}, /* "UM EIN SCHÖNES MÄDCHEN ZU KÜSSEN." in ISO-8859-1/ISO-8859-15/CP1250/CP1252 */
|
||||||
{D_STR_W_LEN ("Um ein sch\xc3\xb6nes M\xc3\xa4" "dchen zu k\xc3\xbcssen."), /* "Um ein schönes Mädchen zu küssen." in UTF-8 */
|
{D_STR_W_LEN ("Um ein sch\xc3\xb6nes M\xc3\xa4" "dchen zu k\xc3\xbcssen."), /* "Um ein schönes Mädchen zu küssen." in UTF-8 */
|
||||||
D_STR_W_LEN ("UM EIN SCH\xc3\x96NES M\xc3\x84" "DCHEN ZU K\xc3\x9cSSEN."),
|
D_STR_W_LEN ("UM EIN SCH\xc3\x96NES M\xc3\x84" "DCHEN ZU K\xc3\x9cSSEN."),
|
||||||
11}, /* "UM EIN SCHÖNES MÄDCHEN ZU KÜSSEN." in UTF-8 */
|
11}, /* "UM EIN SCHÖNES MÄDCHEN ZU KÜSSEN." in UTF-8 */
|
||||||
|
|
||||||
{D_STR_W_LEN ("\x98stanbul"), /* "İstanbul" in CP857 */
|
{D_STR_W_LEN ("\x98stanbul"), /* "İstanbul" in CP857 */
|
||||||
D_STR_W_LEN ("istanbul"), 0}, /* "istanbul" in CP857 */
|
D_STR_W_LEN ("istanbul"), 0}, /* "istanbul" in CP857 */
|
||||||
{D_STR_W_LEN ("\xddstanbul"), /* "İstanbul" in ISO-8859-9/CP1254 */
|
{D_STR_W_LEN ("\xddstanbul"), /* "İstanbul" in ISO-8859-9/CP1254 */
|
||||||
D_STR_W_LEN ("istanbul"), 0}, /* "istanbul" in ISO-8859-9/CP1254 */
|
D_STR_W_LEN ("istanbul"), 0}, /* "istanbul" in ISO-8859-9/CP1254 */
|
||||||
{D_STR_W_LEN ("\xc4\xb0stanbul"), /* "İstanbul" in UTF-8 */
|
{D_STR_W_LEN ("\xc4\xb0stanbul"), /* "İstanbul" in UTF-8 */
|
||||||
D_STR_W_LEN ("istanbul"), 0}, /* "istanbul" in UTF-8 */
|
D_STR_W_LEN ("istanbul"), 0}, /* "istanbul" in UTF-8 */
|
||||||
{D_STR_W_LEN ("Diyarbak\x8dr"), /* "Diyarbakır" in CP857 */
|
{D_STR_W_LEN ("Diyarbak\x8dr"), /* "Diyarbakır" in CP857 */
|
||||||
D_STR_W_LEN ("DiyarbakIR"), 8}, /* "DiyarbakIR" in CP857 */
|
D_STR_W_LEN ("DiyarbakIR"), 8}, /* "DiyarbakIR" in CP857 */
|
||||||
{D_STR_W_LEN ("Diyarbak\xfdr"), /* "Diyarbakır" in ISO-8859-9/CP1254 */
|
{D_STR_W_LEN ("Diyarbak\xfdr"), /* "Diyarbakır" in ISO-8859-9/CP1254 */
|
||||||
D_STR_W_LEN ("DiyarbakIR"), 8}, /* "DiyarbakIR" in ISO-8859-9/CP1254 */
|
D_STR_W_LEN ("DiyarbakIR"), 8}, /* "DiyarbakIR" in ISO-8859-9/CP1254 */
|
||||||
{D_STR_W_LEN ("Diyarbak\xc4\xb1r"), /* "Diyarbakır" in UTF-8 */
|
{D_STR_W_LEN ("Diyarbak\xc4\xb1r"), /* "Diyarbakır" in UTF-8 */
|
||||||
D_STR_W_LEN ("DiyarbakIR"), 8}, /* "DiyarbakIR" in UTF-8 */
|
D_STR_W_LEN ("DiyarbakIR"), 8}, /* "DiyarbakIR" in UTF-8 */
|
||||||
|
|
||||||
{D_STR_W_LEN ("\x92\xa5\xe1\xe2\xae\xa2\xa0\xef \x91\xe2\xe0\xae\xaa\xa0."), /* "Тестовая Строка." in CP866 */
|
{D_STR_W_LEN ("\x92\xa5\xe1\xe2\xae\xa2\xa0\xef \x91\xe2\xe0\xae\xaa\xa0."), /* "Тестовая Строка." in CP866 */
|
||||||
D_STR_W_LEN ("\x92\x85\x91\x92\x8e\x82\x80\x9f \x91\x92\x90\x8e\x8a\x80."),
|
D_STR_W_LEN ("\x92\x85\x91\x92\x8e\x82\x80\x9f \x91\x92\x90\x8e\x8a\x80."),
|
||||||
1}, /* "ТЕСТОВАЯ СТРОКА." in CP866 */
|
1}, /* "ТЕСТОВАЯ СТРОКА." in CP866 */
|
||||||
{D_STR_W_LEN ("\xd2\xe5\xf1\xf2\xee\xe2\xe0\xff \xd1\xf2\xf0\xee\xea\xe0."), /* "Тестовая Строка." in CP1251 */
|
{D_STR_W_LEN ("\xd2\xe5\xf1\xf2\xee\xe2\xe0\xff \xd1\xf2\xf0\xee\xea\xe0."), /* "Тестовая Строка." in CP1251 */
|
||||||
D_STR_W_LEN ("\xd2\xc5\xd1\xd2\xce\xc2\xc0\xdf \xd1\xd2\xd0\xce\xca\xc0."),
|
D_STR_W_LEN ("\xd2\xc5\xd1\xd2\xce\xc2\xc0\xdf \xd1\xd2\xd0\xce\xca\xc0."),
|
||||||
1}, /* "ТЕСТОВАЯ СТРОКА." in CP1251 */
|
1}, /* "ТЕСТОВАЯ СТРОКА." in CP1251 */
|
||||||
{D_STR_W_LEN ("\xf4\xc5\xd3\xd4\xcf\xd7\xc1\xd1 \xf3\xd4\xd2\xcf\xcb\xc1."), /* "Тестовая Строка." in KOI8-R */
|
{D_STR_W_LEN ("\xf4\xc5\xd3\xd4\xcf\xd7\xc1\xd1 \xf3\xd4\xd2\xcf\xcb\xc1."), /* "Тестовая Строка." in KOI8-R */
|
||||||
D_STR_W_LEN ("\xf4\xe5\xf3\xf4\xef\xf7\xe1\xf1 \xf3\xf4\xf2\xef\xeb\xe1."),
|
D_STR_W_LEN ("\xf4\xe5\xf3\xf4\xef\xf7\xe1\xf1 \xf3\xf4\xf2\xef\xeb\xe1."),
|
||||||
1}, /* "ТЕСТОВАЯ СТРОКА." in KOI8-R */
|
1}, /* "ТЕСТОВАЯ СТРОКА." in KOI8-R */
|
||||||
{D_STR_W_LEN ("\xc2\xd5\xe1\xe2\xde\xd2\xd0\xef \xc1\xe2\xe0\xde\xda\xd0."), /* "Тестовая Строка." in ISO-8859-5 */
|
{D_STR_W_LEN ("\xc2\xd5\xe1\xe2\xde\xd2\xd0\xef \xc1\xe2\xe0\xde\xda\xd0."), /* "Тестовая Строка." in ISO-8859-5 */
|
||||||
D_STR_W_LEN ("\xc2\xb5\xc1\xc2\xbe\xb2\xb0\xcf \xc1\xc2\xc0\xbe\xba\xb0."),
|
D_STR_W_LEN ("\xc2\xb5\xc1\xc2\xbe\xb2\xb0\xcf \xc1\xc2\xc0\xbe\xba\xb0."),
|
||||||
1}, /* "ТЕСТОВАЯ СТРОКА." in ISO-8859-5 */
|
1}, /* "ТЕСТОВАЯ СТРОКА." in ISO-8859-5 */
|
||||||
{D_STR_W_LEN ("\xd0\xa2\xd0\xb5\xd1\x81\xd1\x82\xd0\xbe\xd0\xb2\xd0\xb0\xd1"
|
{D_STR_W_LEN ("\xd0\xa2\xd0\xb5\xd1\x81\xd1\x82\xd0\xbe\xd0\xb2\xd0\xb0\xd1"
|
||||||
"\x8f \xd0\xa1\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0."), /* "Тестовая Строка." in UTF-8 */
|
"\x8f \xd0\xa1\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0."), /* "Тестовая Строка." in UTF-8 */
|
||||||
D_STR_W_LEN ("\xd0\xa2\xd0\x95\xd0\xa1\xd0\xa2\xd0\x9e\xd0\x92\xd0\x90\xd0"
|
D_STR_W_LEN ("\xd0\xa2\xd0\x95\xd0\xa1\xd0\xa2\xd0\x9e\xd0\x92\xd0\x90\xd0"
|
||||||
"\xaf \xd0\xa1\xd0\xa2\xd0\xa0\xd0\x9e\xd0\x9a\xd0\x90."), 3} /* "ТЕСТОВАЯ СТРОКА." in UTF-8 */
|
"\xaf \xd0\xa1\xd0\xa2\xd0\xa0\xd0\x9e\xd0\x9a\xd0\x90."), 3} /* "ТЕСТОВАЯ СТРОКА." in UTF-8 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -900,15 +900,15 @@ static const struct str_with_value dstrs_w_values[] = {
|
|||||||
{D_STR_W_LEN ("00000000000000000000000031295483"), 32, 31295483},
|
{D_STR_W_LEN ("00000000000000000000000031295483"), 32, 31295483},
|
||||||
|
|
||||||
/* numbers below and above limits */
|
/* numbers below and above limits */
|
||||||
{D_STR_W_LEN ("127"), 3, 127}, /* 0x7F, SCHAR_MAX */
|
{D_STR_W_LEN ("127"), 3, 127}, /* 0x7F, SCHAR_MAX */
|
||||||
{D_STR_W_LEN ("128"), 3, 128}, /* 0x80, SCHAR_MAX+1 */
|
{D_STR_W_LEN ("128"), 3, 128}, /* 0x80, SCHAR_MAX+1 */
|
||||||
{D_STR_W_LEN ("255"), 3, 255}, /* 0xFF, UCHAR_MAX */
|
{D_STR_W_LEN ("255"), 3, 255}, /* 0xFF, UCHAR_MAX */
|
||||||
{D_STR_W_LEN ("256"), 3, 256}, /* 0x100, UCHAR_MAX+1 */
|
{D_STR_W_LEN ("256"), 3, 256}, /* 0x100, UCHAR_MAX+1 */
|
||||||
{D_STR_W_LEN ("32767"), 5, 32767}, /* 0x7FFF, INT16_MAX */
|
{D_STR_W_LEN ("32767"), 5, 32767}, /* 0x7FFF, INT16_MAX */
|
||||||
{D_STR_W_LEN ("32768"), 5, 32768}, /* 0x8000, INT16_MAX+1 */
|
{D_STR_W_LEN ("32768"), 5, 32768}, /* 0x8000, INT16_MAX+1 */
|
||||||
{D_STR_W_LEN ("65535"), 5, 65535}, /* 0xFFFF, UINT16_MAX */
|
{D_STR_W_LEN ("65535"), 5, 65535}, /* 0xFFFF, UINT16_MAX */
|
||||||
{D_STR_W_LEN ("65536"), 5, 65536}, /* 0x10000, UINT16_MAX+1 */
|
{D_STR_W_LEN ("65536"), 5, 65536}, /* 0x10000, UINT16_MAX+1 */
|
||||||
{D_STR_W_LEN ("2147483647"), 10, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
{D_STR_W_LEN ("2147483647"), 10, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
||||||
{D_STR_W_LEN ("2147483648"), 10, UINT64_C (2147483648)}, /* 0x80000000, INT32_MAX+1 */
|
{D_STR_W_LEN ("2147483648"), 10, UINT64_C (2147483648)}, /* 0x80000000, INT32_MAX+1 */
|
||||||
{D_STR_W_LEN ("4294967295"), 10, UINT64_C (4294967295)}, /* 0xFFFFFFFF, UINT32_MAX */
|
{D_STR_W_LEN ("4294967295"), 10, UINT64_C (4294967295)}, /* 0xFFFFFFFF, UINT32_MAX */
|
||||||
{D_STR_W_LEN ("4294967296"), 10, UINT64_C (4294967296)}, /* 0x100000000, UINT32_MAX+1 */
|
{D_STR_W_LEN ("4294967296"), 10, UINT64_C (4294967296)}, /* 0x100000000, UINT32_MAX+1 */
|
||||||
@@ -968,14 +968,14 @@ const struct str_with_len str_ovflw[] = {
|
|||||||
const struct str_with_len str_no_num[] = {
|
const struct str_with_len str_no_num[] = {
|
||||||
D_STR_W_LEN ("zero"),
|
D_STR_W_LEN ("zero"),
|
||||||
D_STR_W_LEN ("one"),
|
D_STR_W_LEN ("one"),
|
||||||
D_STR_W_LEN ("\xb9\xb2\xb3"), /* superscript "123" in ISO-8859-1/CP1252 */
|
D_STR_W_LEN ("\xb9\xb2\xb3"), /* superscript "123" in ISO-8859-1/CP1252 */
|
||||||
D_STR_W_LEN ("\xc2\xb9\xc2\xb2\xc2\xb3"), /* superscript "123" in UTF-8 */
|
D_STR_W_LEN ("\xc2\xb9\xc2\xb2\xc2\xb3"), /* superscript "123" in UTF-8 */
|
||||||
D_STR_W_LEN ("\xd9\xa1\xd9\xa2\xd9\xa3"), /* Arabic-Indic "١٢٣" in UTF-8 */
|
D_STR_W_LEN ("\xd9\xa1\xd9\xa2\xd9\xa3"), /* Arabic-Indic "١٢٣" in UTF-8 */
|
||||||
D_STR_W_LEN ("\xdb\xb1\xdb\xb2\xdb\xb3"), /* Ext Arabic-Indic "۱۲۳" in UTF-8 */
|
D_STR_W_LEN ("\xdb\xb1\xdb\xb2\xdb\xb3"), /* Ext Arabic-Indic "۱۲۳" in UTF-8 */
|
||||||
D_STR_W_LEN ("\xe0\xa5\xa7\xe0\xa5\xa8\xe0\xa5\xa9"), /* Devanagari "१२३" in UTF-8 */
|
D_STR_W_LEN ("\xe0\xa5\xa7\xe0\xa5\xa8\xe0\xa5\xa9"), /* Devanagari "१२३" in UTF-8 */
|
||||||
D_STR_W_LEN ("\xe4\xb8\x80\xe4\xba\x8c\xe4\xb8\x89"), /* Chinese "一二三" in UTF-8 */
|
D_STR_W_LEN ("\xe4\xb8\x80\xe4\xba\x8c\xe4\xb8\x89"), /* Chinese "一二三" in UTF-8 */
|
||||||
D_STR_W_LEN ("\xd2\xbb\xb6\xfe\xc8\xfd"), /* Chinese "一二三" in GB2312/CP936 */
|
D_STR_W_LEN ("\xd2\xbb\xb6\xfe\xc8\xfd"), /* Chinese "一二三" in GB2312/CP936 */
|
||||||
D_STR_W_LEN ("\x1B\x24\x29\x41\x0E\x52\x3B\x36\x7E\x48\x7D\x0F") /* Chinese "一二三" in ISO-2022-CN */
|
D_STR_W_LEN ("\x1B\x24\x29\x41\x0E\x52\x3B\x36\x7E\x48\x7D\x0F") /* Chinese "一二三" in ISO-2022-CN */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* valid hex string for conversion to unsigned integer value */
|
/* valid hex string for conversion to unsigned integer value */
|
||||||
@@ -1013,25 +1013,25 @@ static const struct str_with_value xdstrs_w_values[] = {
|
|||||||
{D_STR_W_LEN ("0000000000000000000000003A29e4C3"), 32, 0x3A29E4C3},
|
{D_STR_W_LEN ("0000000000000000000000003A29e4C3"), 32, 0x3A29E4C3},
|
||||||
|
|
||||||
/* numbers below and above limits */
|
/* numbers below and above limits */
|
||||||
{D_STR_W_LEN ("7F"), 2, 127}, /* 0x7F, SCHAR_MAX */
|
{D_STR_W_LEN ("7F"), 2, 127}, /* 0x7F, SCHAR_MAX */
|
||||||
{D_STR_W_LEN ("7f"), 2, 127}, /* 0x7F, SCHAR_MAX */
|
{D_STR_W_LEN ("7f"), 2, 127}, /* 0x7F, SCHAR_MAX */
|
||||||
{D_STR_W_LEN ("80"), 2, 128}, /* 0x80, SCHAR_MAX+1 */
|
{D_STR_W_LEN ("80"), 2, 128}, /* 0x80, SCHAR_MAX+1 */
|
||||||
{D_STR_W_LEN ("fF"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
{D_STR_W_LEN ("fF"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
||||||
{D_STR_W_LEN ("Ff"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
{D_STR_W_LEN ("Ff"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
||||||
{D_STR_W_LEN ("FF"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
{D_STR_W_LEN ("FF"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
||||||
{D_STR_W_LEN ("ff"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
{D_STR_W_LEN ("ff"), 2, 255}, /* 0xFF, UCHAR_MAX */
|
||||||
{D_STR_W_LEN ("100"), 3, 256}, /* 0x100, UCHAR_MAX+1 */
|
{D_STR_W_LEN ("100"), 3, 256}, /* 0x100, UCHAR_MAX+1 */
|
||||||
{D_STR_W_LEN ("7fff"), 4, 32767}, /* 0x7FFF, INT16_MAX */
|
{D_STR_W_LEN ("7fff"), 4, 32767}, /* 0x7FFF, INT16_MAX */
|
||||||
{D_STR_W_LEN ("7FFF"), 4, 32767}, /* 0x7FFF, INT16_MAX */
|
{D_STR_W_LEN ("7FFF"), 4, 32767}, /* 0x7FFF, INT16_MAX */
|
||||||
{D_STR_W_LEN ("7Fff"), 4, 32767}, /* 0x7FFF, INT16_MAX */
|
{D_STR_W_LEN ("7Fff"), 4, 32767}, /* 0x7FFF, INT16_MAX */
|
||||||
{D_STR_W_LEN ("8000"), 4, 32768}, /* 0x8000, INT16_MAX+1 */
|
{D_STR_W_LEN ("8000"), 4, 32768}, /* 0x8000, INT16_MAX+1 */
|
||||||
{D_STR_W_LEN ("ffff"), 4, 65535}, /* 0xFFFF, UINT16_MAX */
|
{D_STR_W_LEN ("ffff"), 4, 65535}, /* 0xFFFF, UINT16_MAX */
|
||||||
{D_STR_W_LEN ("FFFF"), 4, 65535}, /* 0xFFFF, UINT16_MAX */
|
{D_STR_W_LEN ("FFFF"), 4, 65535}, /* 0xFFFF, UINT16_MAX */
|
||||||
{D_STR_W_LEN ("FffF"), 4, 65535}, /* 0xFFFF, UINT16_MAX */
|
{D_STR_W_LEN ("FffF"), 4, 65535}, /* 0xFFFF, UINT16_MAX */
|
||||||
{D_STR_W_LEN ("10000"), 5, 65536}, /* 0x10000, UINT16_MAX+1 */
|
{D_STR_W_LEN ("10000"), 5, 65536}, /* 0x10000, UINT16_MAX+1 */
|
||||||
{D_STR_W_LEN ("7FFFFFFF"), 8, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
{D_STR_W_LEN ("7FFFFFFF"), 8, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
||||||
{D_STR_W_LEN ("7fffffff"), 8, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
{D_STR_W_LEN ("7fffffff"), 8, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
||||||
{D_STR_W_LEN ("7FFffFff"), 8, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
{D_STR_W_LEN ("7FFffFff"), 8, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
|
||||||
{D_STR_W_LEN ("80000000"), 8, UINT64_C (2147483648)}, /* 0x80000000, INT32_MAX+1 */
|
{D_STR_W_LEN ("80000000"), 8, UINT64_C (2147483648)}, /* 0x80000000, INT32_MAX+1 */
|
||||||
{D_STR_W_LEN ("FFFFFFFF"), 8, UINT64_C (4294967295)}, /* 0xFFFFFFFF, UINT32_MAX */
|
{D_STR_W_LEN ("FFFFFFFF"), 8, UINT64_C (4294967295)}, /* 0xFFFFFFFF, UINT32_MAX */
|
||||||
{D_STR_W_LEN ("ffffffff"), 8, UINT64_C (4294967295)}, /* 0xFFFFFFFF, UINT32_MAX */
|
{D_STR_W_LEN ("ffffffff"), 8, UINT64_C (4294967295)}, /* 0xFFFFFFFF, UINT32_MAX */
|
||||||
@@ -1124,8 +1124,8 @@ const struct str_with_len strx_ovflw[] = {
|
|||||||
D_STR_W_LEN ("434532891232591226417"),
|
D_STR_W_LEN ("434532891232591226417"),
|
||||||
D_STR_W_LEN ("10000000000000000a"),
|
D_STR_W_LEN ("10000000000000000a"),
|
||||||
D_STR_W_LEN ("10000000000000000E"),
|
D_STR_W_LEN ("10000000000000000E"),
|
||||||
D_STR_W_LEN ("100000000000000000 and nothing"), /* 0x10000000000000000, UINT64_MAX+1 */
|
D_STR_W_LEN ("100000000000000000 and nothing"), /* 0x10000000000000000, UINT64_MAX+1 */
|
||||||
D_STR_W_LEN ("100000000000000000xx"), /* 0x10000000000000000, UINT64_MAX+1 */
|
D_STR_W_LEN ("100000000000000000xx"), /* 0x10000000000000000, UINT64_MAX+1 */
|
||||||
D_STR_W_LEN ("99999999999999999999"),
|
D_STR_W_LEN ("99999999999999999999"),
|
||||||
D_STR_W_LEN ("18446744073709551616abcd"),
|
D_STR_W_LEN ("18446744073709551616abcd"),
|
||||||
D_STR_W_LEN ("20000000000000000000 suffix"),
|
D_STR_W_LEN ("20000000000000000000 suffix"),
|
||||||
|
|||||||
@@ -53,10 +53,164 @@
|
|||||||
#include "test_helpers.h"
|
#include "test_helpers.h"
|
||||||
|
|
||||||
#define LARGE_STRING \
|
#define LARGE_STRING \
|
||||||
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello"
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelXloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello" \
|
||||||
|
"HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello\n"
|
||||||
|
|
||||||
|
|
||||||
#define LARGE_REPLY_STRING \
|
#define LARGE_REPLY_STRING \
|
||||||
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld"
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" \
|
||||||
|
"WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld\n"
|
||||||
|
|
||||||
#ifdef HTTPS_SUPPORT
|
#ifdef HTTPS_SUPPORT
|
||||||
#include <gnutls/gnutls.h>
|
#include <gnutls/gnutls.h>
|
||||||
@@ -338,6 +492,7 @@ wr_handshake (struct wr_socket *s)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Send data to remote by socket.
|
* Send data to remote by socket.
|
||||||
|
*
|
||||||
* @param s the socket to use
|
* @param s the socket to use
|
||||||
* @param buf the buffer with data to send
|
* @param buf the buffer with data to send
|
||||||
* @param len the length of data in @a buf
|
* @param len the length of data in @a buf
|
||||||
@@ -351,15 +506,24 @@ wr_send (struct wr_socket *s,
|
|||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
if (wr_plain == s->t)
|
if (wr_plain == s->t)
|
||||||
return MHD_send_ (s->fd, buf, len);
|
{
|
||||||
|
ssize_t ret;
|
||||||
|
|
||||||
|
ret = MHD_send_ (s->fd, buf, len);
|
||||||
|
(void) MHD_socket_cork_ (s->fd,
|
||||||
|
false);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
#ifdef HTTPS_SUPPORT
|
#ifdef HTTPS_SUPPORT
|
||||||
if (wr_tls == s->t)
|
if (wr_tls == s->t)
|
||||||
{
|
{
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
if (! s->tls_connected && ! wr_handshake (s))
|
if (! s->tls_connected && ! wr_handshake (s))
|
||||||
return -1;
|
return -1;
|
||||||
|
ret = gnutls_record_send (s->tls_s,
|
||||||
ret = gnutls_record_send (s->tls_s, buf, len);
|
buf,
|
||||||
|
len);
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
return ret;
|
return ret;
|
||||||
if (GNUTLS_E_AGAIN == ret)
|
if (GNUTLS_E_AGAIN == ret)
|
||||||
@@ -591,7 +755,7 @@ kick_select ()
|
|||||||
{
|
{
|
||||||
if (MHD_ITC_IS_VALID_ (kicker))
|
if (MHD_ITC_IS_VALID_ (kicker))
|
||||||
{
|
{
|
||||||
MHD_itc_activate_ (kicker, "K");
|
(void) MHD_itc_activate_ (kicker, "K");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -698,6 +862,8 @@ recv_all (struct wr_socket *sock,
|
|||||||
}
|
}
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
if (0 != strncmp (text, buf, off + ret))
|
||||||
|
abort ();
|
||||||
}
|
}
|
||||||
if (0 != strncmp (text, buf, len))
|
if (0 != strncmp (text, buf, len))
|
||||||
abort ();
|
abort ();
|
||||||
@@ -715,8 +881,10 @@ run_usock (void *cls)
|
|||||||
{
|
{
|
||||||
struct MHD_UpgradeResponseHandle *urh = cls;
|
struct MHD_UpgradeResponseHandle *urh = cls;
|
||||||
|
|
||||||
MHD_upgrade_action (urh,
|
if (MHD_YES !=
|
||||||
MHD_UPGRADE_ACTION_CORK_OFF);
|
MHD_upgrade_action (urh,
|
||||||
|
MHD_UPGRADE_ACTION_CORK_OFF))
|
||||||
|
abort ();
|
||||||
send_all (usock,
|
send_all (usock,
|
||||||
LARGE_STRING);
|
LARGE_STRING);
|
||||||
recv_all (usock,
|
recv_all (usock,
|
||||||
@@ -953,7 +1121,7 @@ run_mhd_select_loop (struct MHD_Daemon *daemon)
|
|||||||
&ws,
|
&ws,
|
||||||
&es);
|
&es);
|
||||||
}
|
}
|
||||||
MHD_itc_destroy_ (kicker);
|
(void) MHD_itc_destroy_ (kicker);
|
||||||
MHD_itc_set_invalid_ (kicker);
|
MHD_itc_set_invalid_ (kicker);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -991,7 +1159,6 @@ run_mhd_epoll_loop (struct MHD_Daemon *daemon)
|
|||||||
MHD_UNSIGNED_LONG_LONG to;
|
MHD_UNSIGNED_LONG_LONG to;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int ret;
|
int ret;
|
||||||
char drain[128];
|
|
||||||
|
|
||||||
di = MHD_get_daemon_info (daemon,
|
di = MHD_get_daemon_info (daemon,
|
||||||
MHD_DAEMON_INFO_EPOLL_FD);
|
MHD_DAEMON_INFO_EPOLL_FD);
|
||||||
@@ -1023,7 +1190,7 @@ run_mhd_epoll_loop (struct MHD_Daemon *daemon)
|
|||||||
MHD_itc_clear_ (kicker);
|
MHD_itc_clear_ (kicker);
|
||||||
MHD_run (daemon);
|
MHD_run (daemon);
|
||||||
}
|
}
|
||||||
MHD_itc_destroy_ (kicker);
|
(void) MHD_itc_destroy_ (kicker);
|
||||||
MHD_itc_set_invalid_ (kicker);
|
MHD_itc_set_invalid_ (kicker);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1203,7 +1370,6 @@ main (int argc,
|
|||||||
if (has_param (argc, argv, "-q") ||
|
if (has_param (argc, argv, "-q") ||
|
||||||
has_param (argc, argv, "--quiet"))
|
has_param (argc, argv, "--quiet"))
|
||||||
verbose = 0;
|
verbose = 0;
|
||||||
|
|
||||||
if (test_tls)
|
if (test_tls)
|
||||||
{
|
{
|
||||||
#ifdef HTTPS_SUPPORT
|
#ifdef HTTPS_SUPPORT
|
||||||
@@ -1247,7 +1413,6 @@ main (int argc,
|
|||||||
return 77;
|
return 77;
|
||||||
#endif /* ! HTTPS_SUPPORT */
|
#endif /* ! HTTPS_SUPPORT */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* run tests */
|
/* run tests */
|
||||||
if (verbose)
|
if (verbose)
|
||||||
printf ("Starting HTTP \"Upgrade\" tests with %s connections.\n",
|
printf ("Starting HTTP \"Upgrade\" tests with %s connections.\n",
|
||||||
@@ -1262,7 +1427,6 @@ main (int argc,
|
|||||||
res);
|
res);
|
||||||
else if (verbose)
|
else if (verbose)
|
||||||
printf ("PASSED: Upgrade with external select.\n");
|
printf ("PASSED: Upgrade with external select.\n");
|
||||||
|
|
||||||
/* Try external auto */
|
/* Try external auto */
|
||||||
res = test_upgrade (MHD_USE_AUTO,
|
res = test_upgrade (MHD_USE_AUTO,
|
||||||
0);
|
0);
|
||||||
|
|||||||
+14
-14
@@ -24,7 +24,7 @@ typedef struct node
|
|||||||
/* $NetBSD: tsearch.c,v 1.5 2005/11/29 03:12:00 christos Exp $ */
|
/* $NetBSD: tsearch.c,v 1.5 2005/11/29 03:12:00 christos Exp $ */
|
||||||
/* find or insert datum into search tree */
|
/* find or insert datum into search tree */
|
||||||
void *
|
void *
|
||||||
tsearch (const void *vkey, /* key to be located */
|
tsearch (const void *vkey, /* key to be located */
|
||||||
void **vrootp, /* address of tree root */
|
void **vrootp, /* address of tree root */
|
||||||
int (*compar)(const void *, const void *))
|
int (*compar)(const void *, const void *))
|
||||||
{
|
{
|
||||||
@@ -38,19 +38,19 @@ tsearch (const void *vkey, /* key to be located */
|
|||||||
{ /* Knuth's T1: */
|
{ /* Knuth's T1: */
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
||||||
return *rootp; /* we found it! */
|
return *rootp; /* we found it! */
|
||||||
|
|
||||||
rootp = (r < 0) ?
|
rootp = (r < 0) ?
|
||||||
&(*rootp)->llink : /* T3: follow left branch */
|
&(*rootp)->llink : /* T3: follow left branch */
|
||||||
&(*rootp)->rlink; /* T4: follow right branch */
|
&(*rootp)->rlink; /* T4: follow right branch */
|
||||||
}
|
}
|
||||||
|
|
||||||
q = malloc (sizeof(node_t)); /* T5: key not found */
|
q = malloc (sizeof(node_t)); /* T5: key not found */
|
||||||
if (q)
|
if (q)
|
||||||
{ /* make new node */
|
{ /* make new node */
|
||||||
*rootp = q; /* link new node to old */
|
*rootp = q; /* link new node to old */
|
||||||
q->key = vkey; /* initialize new node */
|
q->key = vkey; /* initialize new node */
|
||||||
q->llink = q->rlink = NULL;
|
q->llink = q->rlink = NULL;
|
||||||
}
|
}
|
||||||
return q;
|
return q;
|
||||||
@@ -73,8 +73,8 @@ tfind (const void *vkey, /* key to be found */
|
|||||||
{ /* T1: */
|
{ /* T1: */
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
|
||||||
return *rootp; /* key found */
|
return *rootp; /* key found */
|
||||||
rootp = (r < 0) ?
|
rootp = (r < 0) ?
|
||||||
&(*rootp)->llink : /* T3: follow left branch */
|
&(*rootp)->llink : /* T3: follow left branch */
|
||||||
&(*rootp)->rlink; /* T4: follow right branch */
|
&(*rootp)->rlink; /* T4: follow right branch */
|
||||||
@@ -112,17 +112,17 @@ tdelete (const void *__restrict vkey,
|
|||||||
&(*rootp)->llink : /* follow llink branch */
|
&(*rootp)->llink : /* follow llink branch */
|
||||||
&(*rootp)->rlink; /* follow rlink branch */
|
&(*rootp)->rlink; /* follow rlink branch */
|
||||||
if (*rootp == NULL)
|
if (*rootp == NULL)
|
||||||
return NULL; /* key not found */
|
return NULL; /* key not found */
|
||||||
}
|
}
|
||||||
r = (*rootp)->rlink; /* D1: */
|
r = (*rootp)->rlink; /* D1: */
|
||||||
if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
|
if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
|
||||||
{
|
{
|
||||||
q = r;
|
q = r;
|
||||||
}
|
}
|
||||||
else if (r != NULL)
|
else if (r != NULL)
|
||||||
{ /* Right link is NULL? */
|
{ /* Right link is NULL? */
|
||||||
if (r->llink == NULL)
|
if (r->llink == NULL)
|
||||||
{ /* D2: Find successor */
|
{ /* D2: Find successor */
|
||||||
r->llink = q;
|
r->llink = q;
|
||||||
q = r;
|
q = r;
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,7 @@ tdelete (const void *__restrict vkey,
|
|||||||
q->rlink = (*rootp)->rlink;
|
q->rlink = (*rootp)->rlink;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free (*rootp); /* D4: Free node */
|
free (*rootp); /* D4: Free node */
|
||||||
*rootp = q; /* link parent to new node */
|
*rootp = q; /* link parent to new node */
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ ahc_echo (void *cls,
|
|||||||
{
|
{
|
||||||
struct MHD_Response *response;
|
struct MHD_Response *response;
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
(void) cls; (void) url; (void) method; (void) version; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; (void) method; (void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data; (void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
(void) upload_data; (void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
response = MHD_create_response_from_buffer (0, NULL,
|
response = MHD_create_response_from_buffer (0, NULL,
|
||||||
|
|||||||
@@ -107,9 +107,9 @@ ahc_empty (void *cls,
|
|||||||
(void) cls;
|
(void) cls;
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) version; /* Unused. Silent compiler warning. */
|
(void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data;
|
(void) upload_data;
|
||||||
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
if (0 != strcasecmp ("GET",
|
if (0 != strcasecmp ("GET",
|
||||||
method))
|
method))
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ query_session_ahc (void *cls, struct MHD_Connection *connection,
|
|||||||
struct MHD_Response *response;
|
struct MHD_Response *response;
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
int gret;
|
int gret;
|
||||||
(void) cls; (void) url; (void) method; (void) version; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; (void) method; (void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
if (NULL == *ptr)
|
if (NULL == *ptr)
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ http_ahc (void *cls,
|
|||||||
static int aptr;
|
static int aptr;
|
||||||
struct MHD_Response *response;
|
struct MHD_Response *response;
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
(void) cls; (void) url; (void) version; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; (void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
if (0 != strcmp (method, MHD_HTTP_METHOD_GET))
|
if (0 != strcmp (method, MHD_HTTP_METHOD_GET))
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ ahc_echo (void *cls,
|
|||||||
const char *password = "testpass";
|
const char *password = "testpass";
|
||||||
const char *realm = "test@example.com";
|
const char *realm = "test@example.com";
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
||||||
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ ahc_echo (void *cls,
|
|||||||
const char *password = "testpass";
|
const char *password = "testpass";
|
||||||
const char *realm = "test@example.com";
|
const char *realm = "test@example.com";
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
||||||
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; (void) unused; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
|
|||||||
@@ -730,9 +730,9 @@ ahc_empty (void *cls,
|
|||||||
(void) cls;
|
(void) cls;
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) version; /* Unused. Silent compiler warning. */
|
(void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data;
|
(void) upload_data;
|
||||||
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
if (0 != strcasecmp ("GET", method))
|
if (0 != strcasecmp ("GET", method))
|
||||||
return MHD_NO; /* unexpected method */
|
return MHD_NO; /* unexpected method */
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ ahc_echo (void *cls,
|
|||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
|
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) version; /* Unused. Silent compiler warning. */
|
(void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data;
|
(void) upload_data;
|
||||||
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
|
|||||||
@@ -687,9 +687,9 @@ ahc_empty (void *cls,
|
|||||||
(void) cls;
|
(void) cls;
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) version; /* Unused. Silence compiler warning. */
|
(void) version; /* Unused. Silence compiler warning. */
|
||||||
(void) upload_data;
|
(void) upload_data;
|
||||||
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
if (0 != strcasecmp ("GET", method))
|
if (0 != strcasecmp ("GET", method))
|
||||||
return MHD_NO; /* unexpected method */
|
return MHD_NO; /* unexpected method */
|
||||||
|
|||||||
@@ -573,7 +573,7 @@ ahc_cancel (void *cls,
|
|||||||
{
|
{
|
||||||
struct MHD_Response *response;
|
struct MHD_Response *response;
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
(void) cls; (void) url; (void) version; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; (void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
if (0 != strcasecmp ("POST", method))
|
if (0 != strcasecmp ("POST", method))
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ ahc_echo (void *cls,
|
|||||||
static int marker;
|
static int marker;
|
||||||
struct MHD_Response *response;
|
struct MHD_Response *response;
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
(void) cls; (void) url; (void) version; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; (void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data; (void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
if (0 != strcmp ("POST", method))
|
if (0 != strcmp ("POST", method))
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ http_AccessHandlerCallback (void *cls,
|
|||||||
void **con_cls)
|
void **con_cls)
|
||||||
{
|
{
|
||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
||||||
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ connection_handler (void *cls,
|
|||||||
void **ptr)
|
void **ptr)
|
||||||
{
|
{
|
||||||
static int i;
|
static int i;
|
||||||
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
(void) cls; (void) url; /* Unused. Silent compiler warning. */
|
||||||
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
(void) method; (void) version; (void) upload_data; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ ahc_echo (void *cls,
|
|||||||
enum MHD_Result ret;
|
enum MHD_Result ret;
|
||||||
|
|
||||||
(void) url;
|
(void) url;
|
||||||
(void) version; /* Unused. Silent compiler warning. */
|
(void) version; /* Unused. Silent compiler warning. */
|
||||||
(void) upload_data;
|
(void) upload_data;
|
||||||
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
(void) upload_data_size; /* Unused. Silent compiler warning. */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user