[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] branch master updated: fix transmission stall issue with
From: |
gnunet |
Subject: |
[libmicrohttpd] branch master updated: fix transmission stall issue with upgraded TLS connections reported by Nguyen Xuan Viet on the mailinglist |
Date: |
Sun, 27 Sep 2020 22:19:44 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository libmicrohttpd.
The following commit(s) were added to refs/heads/master by this push:
new beb7fa82 fix transmission stall issue with upgraded TLS connections
reported by Nguyen Xuan Viet on the mailinglist
beb7fa82 is described below
commit beb7fa828c59c31d4a5178b82121435f2069b181
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Sep 27 22:12:13 2020 +0200
fix transmission stall issue with upgraded TLS connections reported by
Nguyen Xuan Viet on the mailinglist
---
ChangeLog | 6 +
src/examples/connection_close.c | 6 +-
src/examples/demo.c | 6 +-
src/examples/demo_https.c | 6 +-
src/examples/fileserver_example.c | 4 +-
src/examples/websocket_threaded_example.c | 68 ++++-----
src/include/microhttpd.h | 2 +-
src/lib/connection_add.c | 6 +-
src/lib/connection_options.c | 4 +-
src/lib/connection_update_last_activity.c | 4 +-
src/lib/daemon_poll.c | 4 +-
src/lib/daemon_start.c | 14 +-
src/lib/md5.h | 2 +-
src/lib/mhd_mono_clock.c | 4 +-
src/lib/mhd_threads.c | 3 +-
src/lib/tsearch.c | 28 ++--
src/microhttpd/connection.c | 30 ++--
src/microhttpd/daemon.c | 159 +++++++++++----------
src/microhttpd/digestauth.c | 4 +-
src/microhttpd/internal.c | 40 +++---
src/microhttpd/internal.h | 2 +-
src/microhttpd/md5.h | 2 +-
src/microhttpd/memorypool.c | 6 +-
src/microhttpd/mhd_mono_clock.c | 4 +-
src/microhttpd/mhd_send.c | 12 +-
src/microhttpd/mhd_threads.c | 3 +-
src/microhttpd/postprocessor.c | 8 +-
src/microhttpd/response.c | 12 +-
src/microhttpd/sha256.h | 2 +-
src/microhttpd/test_daemon.c | 6 +-
src/microhttpd/test_postprocessor_large.c | 2 +-
src/microhttpd/test_start_stop.c | 6 +-
src/microhttpd/test_str.c | 144 +++++++++----------
src/microhttpd/test_upgrade_large.c | 192 ++++++++++++++++++++++++--
src/microhttpd/tsearch.c | 28 ++--
src/testcurl/https/test_empty_response.c | 2 +-
src/testcurl/https/test_https_get.c | 4 +-
src/testcurl/https/test_https_session_info.c | 2 +-
src/testcurl/https/tls_test_common.c | 2 +-
src/testcurl/test_digestauth.c | 2 +-
src/testcurl/test_digestauth_with_arguments.c | 2 +-
src/testcurl/test_get.c | 4 +-
src/testcurl/test_get_chunked.c | 2 +-
src/testcurl/test_get_empty.c | 4 +-
src/testcurl/test_post.c | 2 +-
src/testcurl/test_post_loop.c | 2 +-
src/testcurl/test_quiesce_stream.c | 2 +-
src/testcurl/test_termination.c | 2 +-
src/testzzuf/test_get_chunked.c | 2 +-
49 files changed, 530 insertions(+), 333 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 9ad82c78..0f6fb3eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
Make MHD_USE_NO_LISTEN_SOCKET work in conjunction with
MHD internal threads. -CG/DE
diff --git a/src/examples/connection_close.c b/src/examples/connection_close.c
index fb9f77d9..b0314dea 100644
--- a/src/examples/connection_close.c
+++ b/src/examples/connection_close.c
@@ -102,10 +102,10 @@ main (int argc, char *const *argv)
return 1;
}
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_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG
| MHD_USE_POLL, */
+ /* 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_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, */
atoi (argv[1]),
NULL, NULL, &ahc_echo, PAGE,
diff --git a/src/examples/demo.c b/src/examples/demo.c
index 1830d3b0..9f1beda3 100644
--- a/src/examples/demo.c
+++ b/src/examples/demo.c
@@ -283,11 +283,11 @@ list_directory (struct ResponseDataContext *rdc,
snprintf (fullname, sizeof (fullname),
"%s/%s",
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))
- continue; /* ugh, failed to 'stat' */
+ continue; /* ugh, failed to 'stat' */
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)
{
void *r;
diff --git a/src/examples/demo_https.c b/src/examples/demo_https.c
index 69922136..205bc863 100644
--- a/src/examples/demo_https.c
+++ b/src/examples/demo_https.c
@@ -286,11 +286,11 @@ list_directory (struct ResponseDataContext *rdc,
snprintf (fullname, sizeof (fullname),
"%s/%s",
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))
- continue; /* ugh, failed to 'stat' */
+ continue; /* ugh, failed to 'stat' */
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)
{
void *r;
diff --git a/src/examples/fileserver_example.c
b/src/examples/fileserver_example.c
index 767810f9..94c2ca95 100644
--- a/src/examples/fileserver_example.c
+++ b/src/examples/fileserver_example.c
@@ -69,13 +69,13 @@ ahc_echo (void *cls,
*ptr = &aptr;
return MHD_YES;
}
- *ptr = NULL; /* reset when done */
+ *ptr = NULL; /* reset when done */
/* WARNING: direct usage of url as filename is for example only!
* NEVER pass received data directly as parameter to file manipulation
* functions. Always check validity of data before using.
*/
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
fd = open (url + 1, O_RDONLY);
if (-1 != fd)
diff --git a/src/examples/websocket_threaded_example.c
b/src/examples/websocket_threaded_example.c
index 44cb3493..13e75dab 100644
--- a/src/examples/websocket_threaded_example.c
+++ b/src/examples/websocket_threaded_example.c
@@ -36,40 +36,40 @@
"<title>WebSocket chat</title>\n" \
"<script>\n" \
"document.addEventListener('DOMContentLoaded', function() {\n" \
- " const ws = new WebSocket('ws://' + window.location.host);\n" \
- " const btn = document.getElementById('send');\n" \
- " const msg = document.getElementById('msg');\n" \
- " const log = document.getElementById('log');\n" \
- " ws.onopen = function() {\n" \
- " log.value += 'Connected\\n';\n" \
- " };\n" \
- " ws.onclose = function() {\n" \
- " log.value += 'Disconnected\\n';\n" \
- " };\n" \
- " ws.onmessage = function(ev) {\n" \
- " log.value += ev.data + '\\n';\n" \
- " };\n" \
- " btn.onclick = function() {\n" \
- " log.value += '<You>: ' + msg.value + '\\n';\n" \
- " ws.send(msg.value);\n" \
- " };\n" \
- " msg.onkeyup = function(ev) {\n" \
- " if (ev.keyCode === 13) {\n" \
- " ev.preventDefault();\n" \
- " ev.stopPropagation();\n" \
- " btn.click();\n" \
- " msg.value = '';\n" \
- " }\n" \
- " };\n" \
- "});\n" \
- "</script>\n" \
- "</head>\n" \
- "<body>\n" \
- "<input type='text' id='msg' autofocus/>\n" \
- "<input type='button' id='send' value='Send' /><br /><br />\n" \
- "<textarea id='log' rows='20' cols='28'></textarea>\n" \
- "</body>\n" \
- "</html>"
+ " const ws = new WebSocket('ws:// ' + window.location.host);\n"
\
+ // " const btn =
document.getElementById('send');\n" \
+ // " const msg =
document.getElementById('msg');\n" \
+ // " const log =
document.getElementById('log');\n" \
+ // " ws.onopen = function() {\n"
\
+ // " log.value += 'Connected\\n';\n"
\
+ // " };\n"
\
+ // " ws.onclose = function() {\n"
\
+ // " log.value += 'Disconnected\\n';\n"
\
+ // " };\n"
\
+ // " ws.onmessage = function(ev) {\n"
\
+ // " log.value += ev.data + '\\n';\n"
\
+ // " };\n"
\
+ // " btn.onclick = function() {\n"
\
+ // " log.value += '<You>: ' + msg.value
+ '\\n';\n" \
+ // " ws.send(msg.value);\n"
\
+ // " };\n"
\
+ // " msg.onkeyup = function(ev) {\n"
\
+ // " if (ev.keyCode === 13) {\n"
\
+ // " ev.preventDefault();\n"
\
+ // " ev.stopPropagation();\n"
\
+ // " btn.click();\n"
\
+ // " msg.value = '';\n"
\
+ // " }\n"
\
+ // " };\n"
\
+ // "});\n"
\
+ // "</script>\n"
\
+ // "</head>\n"
\
+ // "<body>\n"
\
+ // "<input type='text' id='msg'
autofocus/>\n" \
+ // "<input type='button' id='send'
value='Send' /><br /><br />\n" \
+ // "<textarea id='log' rows='20'
cols='28'></textarea>\n" \
+ // "</body>\n"
\
+ // "</html>"
#define BAD_REQUEST_PAGE \
"<html>\n" \
"<head>\n" \
diff --git a/src/include/microhttpd.h b/src/include/microhttpd.h
index b57ced32..8dfc38c8 100644
--- a/src/include/microhttpd.h
+++ b/src/include/microhttpd.h
@@ -132,7 +132,7 @@ typedef intptr_t ssize_t;
* Current version of the library.
* 0x01093001 = 1.9.30-1.
*/
-#define MHD_VERSION 0x00097104
+#define MHD_VERSION 0x00097105
/**
* Operational results from MHD calls.
diff --git a/src/lib/connection_add.c b/src/lib/connection_add.c
index 91dd0076..8875064e 100644
--- a/src/lib/connection_add.c
+++ b/src/lib/connection_add.c
@@ -188,8 +188,8 @@ thread_main_handle_connection (void *data)
}
#endif /* HAVE_POLL */
MHD_itc_clear_ (daemon->itc);
- continue; /* Check again for resume. */
- } /* End of "suspended" branch. */
+ continue; /* Check again for resume. */
+ } /* End of "suspended" branch. */
if (was_suspended)
{
@@ -1047,7 +1047,7 @@ MHD_accept_connection_ (struct MHD_Daemon *daemon)
/* This could be a common occurrence with multiple worker threads */
if (MHD_SCKT_ERR_IS_ (err,
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))
return MHD_SC_ACCEPT_FAST_DISCONNECT; /* do not print error if client
just disconnected early */
if (MHD_SCKT_ERR_IS_EAGAIN_ (err) )
diff --git a/src/lib/connection_options.c b/src/lib/connection_options.c
index ef167354..ad6a0fa7 100644
--- a/src/lib/connection_options.c
+++ b/src/lib/connection_options.c
@@ -90,10 +90,10 @@ MHD_update_last_activity_ (struct MHD_Connection
*connection)
struct MHD_Daemon *daemon = connection->daemon;
if (0 == connection->connection_timeout)
- return; /* Skip update of activity for connections
+ return; /* Skip update of activity for connections
without timeout timer. */
if (connection->suspended)
- return; /* no activity on suspended connections */
+ return; /* no activity on suspended connections */
connection->last_activity = MHD_monotonic_sec_counter ();
if (MHD_TM_THREAD_PER_CONNECTION == daemon->threading_mode)
diff --git a/src/lib/connection_update_last_activity.c
b/src/lib/connection_update_last_activity.c
index 73628675..326b5b3f 100644
--- a/src/lib/connection_update_last_activity.c
+++ b/src/lib/connection_update_last_activity.c
@@ -38,10 +38,10 @@ MHD_connection_update_last_activity_ (struct MHD_Connection
*connection)
struct MHD_Daemon *daemon = connection->daemon;
if (0 == connection->connection_timeout)
- return; /* Skip update of activity for connections
+ return; /* Skip update of activity for connections
without timeout timer. */
if (connection->suspended)
- return; /* no activity on suspended connections */
+ return; /* no activity on suspended connections */
connection->last_activity = MHD_monotonic_sec_counter ();
if (MHD_TM_THREAD_PER_CONNECTION == daemon->threading_mode)
diff --git a/src/lib/daemon_poll.c b/src/lib/daemon_poll.c
index ec52b45d..27cdd4ca 100644
--- a/src/lib/daemon_poll.c
+++ b/src/lib/daemon_poll.c
@@ -294,9 +294,9 @@ MHD_daemon_poll_all_ (struct MHD_Daemon *daemon,
prev = pos->prev;
/* first, sanity checks */
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)
- continue; /* fd mismatch, something else happened, retry later ... */
+ continue; /* fd mismatch, something else happened, retry later ... */
MHD_connection_call_handlers_ (pos,
0 != (p[poll_server + i].revents &
POLLIN),
0 != (p[poll_server + i].revents
diff --git a/src/lib/daemon_start.c b/src/lib/daemon_start.c
index 5704b034..e2998f9d 100644
--- a/src/lib/daemon_start.c
+++ b/src/lib/daemon_start.c
@@ -67,11 +67,11 @@ configure_listen_reuse (struct MHD_Daemon *daemon)
}
return MHD_SC_OK;
#endif /* ! MHD_WINSOCK_SOCKETS */
- /* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
- * Fail if SO_REUSEPORT is not defined or setsockopt fails.
- */
- /* SO_REUSEADDR on W32 has the same semantics
- as SO_REUSEPORT on BSD/Linux */
+ /* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
+ * Fail if SO_REUSEPORT is not defined or setsockopt fails.
+ */
+ /* SO_REUSEADDR on W32 has the same semantics
+ as SO_REUSEPORT on BSD/Linux */
#if defined(MHD_WINSOCK_SOCKETS) || defined(SO_REUSEPORT)
if (0 > setsockopt (daemon->listen_socket,
SOL_SOCKET,
@@ -93,8 +93,8 @@ configure_listen_reuse (struct MHD_Daemon *daemon)
}
return MHD_SC_OK;
#else /* !MHD_WINSOCK_SOCKETS && !SO_REUSEPORT */
- /* we're supposed to allow address:port re-use, but
- on this platform we cannot; fail hard */
+ /* we're supposed to allow address:port re-use, but
+ on this platform we cannot; fail hard */
#ifdef HAVE_MESSAGES
MHD_DLOG (daemon,
MHD_SC_LISTEN_ADDRESS_REUSE_ENABLE_NOT_SUPPORTED,
diff --git a/src/lib/md5.h b/src/lib/md5.h
index 8e95b29b..8005b70b 100644
--- a/src/lib/md5.h
+++ b/src/lib/md5.h
@@ -26,7 +26,7 @@
struct MD5Context
{
- uint32_t state[4]; /* state */
+ uint32_t state[4]; /* state */
uint64_t count; /* number of bits, mod 2^64 */
uint8_t buffer[MD5_BLOCK_SIZE]; /* input buffer */
};
diff --git a/src/lib/mhd_mono_clock.c b/src/lib/mhd_mono_clock.c
index fa548f6e..0bd9984e 100644
--- a/src/lib/mhd_mono_clock.c
+++ b/src/lib/mhd_mono_clock.c
@@ -254,8 +254,8 @@ MHD_monotonic_sec_counter_init (void)
LARGE_INTEGER freq;
LARGE_INTEGER perf_counter;
- QueryPerformanceFrequency (&freq); /* never fail on XP and later */
- QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
+ QueryPerformanceFrequency (&freq); /* never fail on XP and later */
+ QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
perf_freq = freq.QuadPart;
perf_start = perf_counter.QuadPart;
mono_clock_source = _MHD_CLOCK_PERFCOUNTER;
diff --git a/src/lib/mhd_threads.c b/src/lib/mhd_threads.c
index 980a2cbf..c8a7bdf4 100644
--- a/src/lib/mhd_threads.c
+++ b/src/lib/mhd_threads.c
@@ -49,7 +49,8 @@
#if defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || \
defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI)
# 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) || \
defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) \
diff --git a/src/lib/tsearch.c b/src/lib/tsearch.c
index 78f37608..1d74dcce 100644
--- a/src/lib/tsearch.c
+++ b/src/lib/tsearch.c
@@ -24,7 +24,7 @@ typedef struct node
/* $NetBSD: tsearch.c,v 1.5 2005/11/29 03:12:00 christos Exp $ */
/* find or insert datum into search tree */
void *
-tsearch (const void *vkey, /* key to be located */
+tsearch (const void *vkey, /* key to be located */
void **vrootp, /* address of tree root */
int (*compar)(const void *, const void *))
{
@@ -38,19 +38,19 @@ tsearch (const void *vkey, /* key to be located */
{ /* Knuth's T1: */
int r;
- if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
- return *rootp; /* we found it! */
+ if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
+ return *rootp; /* we found it! */
rootp = (r < 0) ?
&(*rootp)->llink : /* T3: follow left 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)
- { /* make new node */
- *rootp = q; /* link new node to old */
- q->key = vkey; /* initialize new node */
+ { /* make new node */
+ *rootp = q; /* link new node to old */
+ q->key = vkey; /* initialize new node */
q->llink = q->rlink = NULL;
}
return q;
@@ -73,8 +73,8 @@ tfind (const void *vkey, /* key to be found */
{ /* T1: */
int r;
- if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
- return *rootp; /* key found */
+ if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
+ return *rootp; /* key found */
rootp = (r < 0) ?
&(*rootp)->llink : /* T3: follow left branch */
&(*rootp)->rlink; /* T4: follow right branch */
@@ -112,17 +112,17 @@ tdelete (const void *__restrict vkey,
&(*rootp)->llink : /* follow llink branch */
&(*rootp)->rlink; /* follow rlink branch */
if (*rootp == NULL)
- return NULL; /* key not found */
+ return NULL; /* key not found */
}
- r = (*rootp)->rlink; /* D1: */
- if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
+ r = (*rootp)->rlink; /* D1: */
+ if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
{
q = r;
}
else if (r != NULL)
{ /* Right link is NULL? */
if (r->llink == NULL)
- { /* D2: Find successor */
+ { /* D2: Find successor */
r->llink = q;
q = r;
}
@@ -135,7 +135,7 @@ tdelete (const void *__restrict vkey,
q->rlink = (*rootp)->rlink;
}
}
- free (*rootp); /* D4: Free node */
+ free (*rootp); /* D4: Free node */
*rootp = q; /* link parent to new node */
return p;
}
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index cf2bfaa1..b2197310 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -115,7 +115,6 @@
#endif
-
/**
* sendfile() chuck size
*/
@@ -250,9 +249,9 @@ MHD_get_connection_values (struct MHD_Connection
*connection,
ret++;
if ( (NULL != iterator) &&
(MHD_NO == iterator (iterator_cls,
- pos->kind,
- pos->header,
- pos->value)) )
+ pos->kind,
+ pos->header,
+ pos->value)) )
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
* closed by MHD_cleanup_upgraded_connection_() during
* connection's final cleanup.
- */}
+ *///
+}
#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);
if (0 == avail_size)
- return false; /* No more space available */
+ return false; /* No more space available */
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
{
size_t grow_size;
grow_size = avail_size / 8;
if (MHD_BUF_INC_SIZE > grow_size)
- { /* Shortage of space */
+ { /* Shortage of space */
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
{
/* 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
a recent development of the HTTP 1.1 specification.
- */content_length_len
+ *///
+ content_length_len
= MHD_snprintf_ (content_length_buf,
sizeof (content_length_buf),
MHD_HTTP_HEADER_CONTENT_LENGTH ": "
@@ -2438,8 +2439,9 @@ static enum MHD_Result
check_write_done (struct MHD_Connection *connection,
enum MHD_CONNECTION_STATE next_state)
{
- if (connection->write_buffer_append_offset !=
- connection->write_buffer_send_offset)
+ if ( (connection->write_buffer_append_offset !=
+ connection->write_buffer_send_offset) ||
+ (connection->sk_cork_on) )
return MHD_NO;
connection->write_buffer_append_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;
if (0 == connection->connection_timeout)
- return; /* Skip update of activity for connections
+ return; /* Skip update of activity for connections
without timeout timer. */
if (connection->suspended)
- return; /* no activity on suspended connections */
+ return; /* no activity on suspended connections */
connection->last_activity = MHD_monotonic_sec_counter ();
if (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION))
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index a21462db..31ef6909 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -1333,6 +1333,7 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
* this function. If 'was_closed' changed externally in the middle
* of processing - it will be processed on next iteration. */
bool was_closed;
+
if (daemon->shutdown)
{
/* Daemon shutting down, application will not receive any more data. */
@@ -1355,10 +1356,9 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
{
#ifdef HAVE_MESSAGES
MHD_DLOG (daemon,
- _ (
- "Failed to forward to application "
- MHD_UNSIGNED_LONG_LONG_PRINTF \
- " bytes of data received from remote side: application shut
down socket.\n"),
+ _ ("Failed to forward to application "
+ MHD_UNSIGNED_LONG_LONG_PRINTF \
+ " bytes of data received from remote side: application shut
down socket.\n"),
(MHD_UNSIGNED_LONG_LONG) urh->in_buffer_used);
#endif
@@ -1367,7 +1367,8 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
* check for any pending data even if socket is not marked
* as 'ready' (signal may arrive after poll()/select()).
* 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;
/* Discard any data received form remote. */
urh->in_buffer_used = 0;
@@ -1379,12 +1380,14 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
connection->tls_read_ready = false;
}
- /* On some platforms (W32, possibly Darwin) failed send() (send() will always
- * fail after remote disconnect was detected) may discard data in system
- * buffers received by system but not yet read by recv().
- * So, before trying send() on any socket, recv() must be performed at first
- * otherwise last part of incoming data may be lost. *//* If disconnect or
error was detected - try to read from socket
- * to dry data possibly pending is system buffers. */if (0 !=
(MHD_EPOLL_STATE_ERROR & urh->app.celi))
+ /* On some platforms (W32, possibly Darwin) failed send() (send() will
+ * always fail after remote disconnect was detected) may discard data in
+ * system buffers received by system but not yet read by recv(). So, before
+ * trying send() on any socket, recv() must be performed at first otherwise
+ * last part of incoming data may be lost. If disconnect or error was
+ * 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;
if (0 != (MHD_EPOLL_STATE_ERROR & urh->mhd.celi))
urh->mhd.celi |= MHD_EPOLL_STATE_READ_READY;
@@ -1424,10 +1427,10 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
else /* 0 < res */
{
urh->in_buffer_used += res;
- if (buf_size > (size_t) res)
- urh->app.celi &= ~MHD_EPOLL_STATE_READ_READY;
- else if (0 < gnutls_record_check_pending (connection->tls_session))
+ if (0 < gnutls_record_check_pending (connection->tls_session))
+ {
connection->tls_read_ready = true;
+ }
}
if (MHD_EPOLL_STATE_ERROR ==
((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 */
MHD_itc_clear_ (daemon->itc);
- continue; /* Check again for resume. */
- } /* End of "suspended" branch. */
+ continue; /* Check again for resume. */
+ } /* End of "suspended" branch. */
if (was_suspended)
{
@@ -2228,7 +2231,8 @@ MHD_cleanup_connections (struct MHD_Daemon *daemon);
* and if possible.
*/
#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
/**
@@ -3379,7 +3383,8 @@ MHD_cleanup_connections (struct MHD_Daemon *daemon)
this is not true as if we fail to do manually remove it,
we are still seeing an event for this fd in epoll,
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,
pos->socket_fd,
NULL))
@@ -3831,9 +3836,9 @@ MHD_select (struct MHD_Daemon *daemon,
return MHD_NO;
}
if (MHD_NO != internal_run_from_select (daemon,
- &rs,
- &ws,
- &es))
+ &rs,
+ &ws,
+ &es))
return (MHD_NO == err_state) ? MHD_YES : MHD_NO;
return MHD_NO;
}
@@ -3920,7 +3925,7 @@ MHD_poll_all (struct MHD_Daemon *daemon,
timeout = 0;
else if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) ||
(MHD_NO == MHD_get_timeout (daemon,
- <imeout)) )
+ <imeout)) )
timeout = -1;
else
timeout = (ltimeout > INT_MAX) ? INT_MAX : (int) ltimeout;
@@ -4000,9 +4005,9 @@ MHD_poll_all (struct MHD_Daemon *daemon,
prev = pos->prev;
/* first, sanity checks */
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)
- continue; /* fd mismatch, something else happened, retry later ... */
+ continue; /* fd mismatch, something else happened, retry later ... */
call_handlers (pos,
0 != (p[poll_server + i].revents & POLLIN),
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() */
if (0 != (events[i].events & EPOLLIN))
+ {
ueh->celi |= MHD_EPOLL_STATE_READ_READY;
+ }
if (0 != (events[i].events & EPOLLOUT))
+ {
ueh->celi |= MHD_EPOLL_STATE_WRITE_READY;
+ }
if (0 != (events[i].events & EPOLLHUP))
+ {
ueh->celi |= MHD_EPOLL_STATE_READ_READY | MHD_EPOLL_STATE_WRITE_READY;
+ }
if ( (0 == (ueh->celi & MHD_EPOLL_STATE_ERROR)) &&
(0 != (events[i].events & (EPOLLERR | EPOLLPRI))) )
{
- /* Process new error state only one time
- * and avoid continuously marking this connection
- * as 'ready'. */
+ /* Process new error state only one time and avoid continuously
+ * marking this connection as 'ready'. */
ueh->celi |= MHD_EPOLL_STATE_ERROR;
new_err_state = true;
}
-
if (! urh->in_eready_list)
{
if (new_err_state ||
@@ -4447,7 +4456,7 @@ MHD_epoll (struct MHD_Daemon *daemon,
if (MHD_NO != may_block)
{
if (MHD_NO != MHD_get_timeout (daemon,
- &timeout_ll))
+ &timeout_ll))
{
if (timeout_ll >= (MHD_UNSIGNED_LONG_LONG) 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_THREAD_STACK_SIZE:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- (size_t) oa[i].value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ (size_t) oa[i].value,
+ MHD_OPTION_END))
return MHD_NO;
break;
/* 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_SERVER_INSANITY:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- (unsigned int) oa[i].value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ (unsigned int) oa[i].value,
+ MHD_OPTION_END))
return MHD_NO;
break;
/* all options taking 'enum' */
#ifdef HTTPS_SUPPORT
case MHD_OPTION_HTTPS_CRED_TYPE:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- (gnutls_credentials_type_t)
oa[i].value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ (gnutls_credentials_type_t) oa[i].value,
+ MHD_OPTION_END))
return MHD_NO;
break;
#endif /* HTTPS_SUPPORT */
/* all options taking 'MHD_socket' */
case MHD_OPTION_LISTEN_SOCKET:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- (MHD_socket) oa[i].value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ (MHD_socket) oa[i].value,
+ MHD_OPTION_END))
return MHD_NO;
break;
/* all options taking 'int' */
case MHD_OPTION_STRICT_FOR_CLIENT:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- (int) oa[i].value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ (int) oa[i].value,
+ MHD_OPTION_END))
return MHD_NO;
break;
/* 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_CALLBACK2:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- oa[i].ptr_value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ oa[i].ptr_value,
+ MHD_OPTION_END))
return MHD_NO;
break;
/* all options taking two pointers */
@@ -5484,21 +5493,21 @@ parse_options_va (struct MHD_Daemon *daemon,
case MHD_OPTION_UNESCAPE_CALLBACK:
case MHD_OPTION_GNUTLS_PSK_CRED_HANDLER:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- (void *) oa[i].value,
- oa[i].ptr_value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ (void *) oa[i].value,
+ oa[i].ptr_value,
+ MHD_OPTION_END))
return MHD_NO;
break;
/* options taking size_t-number followed by pointer */
case MHD_OPTION_DIGEST_AUTH_RANDOM:
if (MHD_NO == parse_options (daemon,
- servaddr,
- opt,
- (size_t) oa[i].value,
- oa[i].ptr_value,
- MHD_OPTION_END))
+ servaddr,
+ opt,
+ (size_t) oa[i].value,
+ oa[i].ptr_value,
+ MHD_OPTION_END))
return MHD_NO;
break;
default:
@@ -5761,7 +5770,7 @@ MHD_start_daemon_va (unsigned int flags,
#ifdef HAVE_POLL
*pflags |= MHD_USE_POLL;
#else /* ! HAVE_POLL */
- /* use select() - do not modify flags */
+ /* use select() - do not modify flags */
#endif /* ! HAVE_POLL */
}
else if (0 != (*pflags & MHD_USE_INTERNAL_POLLING_THREAD))
@@ -5772,7 +5781,7 @@ MHD_start_daemon_va (unsigned int flags,
#elif defined(HAVE_POLL)
*pflags |= MHD_USE_POLL;
#else /* !HAVE_POLL && !EPOLL_SUPPORT */
- /* use select() - do not modify flags */
+ /* use select() - do not modify flags */
#endif /* !HAVE_POLL && !EPOLL_SUPPORT */
}
else
@@ -5781,7 +5790,7 @@ MHD_start_daemon_va (unsigned int flags,
#if defined(EPOLL_SUPPORT)
*pflags |= MHD_USE_EPOLL;
#else /* ! EPOLL_SUPPORT */
- /* use select() - do not modify flags */
+ /* use select() - do not modify flags */
#endif /* ! EPOLL_SUPPORT */
}
}
@@ -5866,8 +5875,8 @@ MHD_start_daemon_va (unsigned int flags,
if (MHD_NO == parse_options_va (daemon,
- &servaddr,
- ap))
+ &servaddr,
+ ap))
{
#ifdef HTTPS_SUPPORT
if ( (0 != (*pflags & MHD_USE_TLS)) &&
@@ -6057,11 +6066,11 @@ MHD_start_daemon_va (unsigned int flags,
#endif
}
#endif /* ! MHD_WINSOCK_SOCKETS */
- /* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
- * Fail if SO_REUSEPORT is not defined or setsockopt fails.
- */
- /* SO_REUSEADDR on W32 has the same semantics
- as SO_REUSEPORT on BSD/Linux */
+ /* Use SO_REUSEADDR on Windows and SO_REUSEPORT on most platforms.
+ * Fail if SO_REUSEPORT is not defined or setsockopt fails.
+ */
+ /* SO_REUSEADDR on W32 has the same semantics
+ as SO_REUSEPORT on BSD/Linux */
#if defined(MHD_WINSOCK_SOCKETS) || defined(SO_REUSEPORT)
if (0 > setsockopt (listen_fd,
SOL_SOCKET,
@@ -6081,8 +6090,8 @@ MHD_start_daemon_va (unsigned int flags,
goto free_and_fail;
}
#else /* !MHD_WINSOCK_SOCKETS && !SO_REUSEPORT */
- /* we're supposed to allow address:port re-use, but
- on this platform we cannot; fail hard */
+ /* we're supposed to allow address:port re-use, but
+ on this platform we cannot; fail hard */
#ifdef HAVE_MESSAGES
MHD_DLOG (daemon,
_ (
diff --git a/src/microhttpd/digestauth.c b/src/microhttpd/digestauth.c
index c3260d1b..3949b268 100644
--- a/src/microhttpd/digestauth.c
+++ b/src/microhttpd/digestauth.c
@@ -604,9 +604,9 @@ check_nonce_nc (struct MHD_Connection *connection,
}
/* Nonce is larger, shift bitmask and bump limit */
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
- 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;
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
MHD_mutex_unlock_chk_ (&daemon->nnc_lock);
diff --git a/src/microhttpd/internal.c b/src/microhttpd/internal.c
index 33542c4a..c5ffa856 100644
--- a/src/microhttpd/internal.c
+++ b/src/microhttpd/internal.c
@@ -214,11 +214,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
connection,
args);
if (MHD_NO == cb (connection,
- args,
- key_len,
- NULL,
- 0,
- kind))
+ args,
+ key_len,
+ NULL,
+ 0,
+ kind))
return MHD_NO;
(*num_headers)++;
break;
@@ -235,11 +235,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
connection,
equals);
if (MHD_NO == cb (connection,
- args,
- key_len,
- equals,
- value_len,
- kind))
+ args,
+ key_len,
+ equals,
+ value_len,
+ kind))
return MHD_NO;
(*num_headers)++;
break;
@@ -256,11 +256,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
connection,
args);
if (MHD_NO == cb (connection,
- args,
- key_len,
- NULL,
- 0,
- kind))
+ args,
+ key_len,
+ NULL,
+ 0,
+ kind))
return MHD_NO;
/* continue with 'bar' */
(*num_headers)++;
@@ -280,11 +280,11 @@ MHD_parse_arguments_ (struct MHD_Connection *connection,
connection,
equals);
if (MHD_NO == cb (connection,
- args,
- key_len,
- equals,
- value_len,
- kind))
+ args,
+ key_len,
+ equals,
+ value_len,
+ kind))
return MHD_NO;
(*num_headers)++;
args = amper;
diff --git a/src/microhttpd/internal.h b/src/microhttpd/internal.h
index cfaca9af..e2b468cb 100644
--- a/src/microhttpd/internal.h
+++ b/src/microhttpd/internal.h
@@ -96,7 +96,7 @@
MHD_PANIC (_ ("Failed to close FD.\n")); \
} while (0)
-/*
+/*
#define EXTRA_CHECKS _MHD_MACRO_NO
* Not used. Behaviour is controlled by _DEBUG/NDEBUG macros.
*/
diff --git a/src/microhttpd/md5.h b/src/microhttpd/md5.h
index f81d91cb..6c2a33f5 100644
--- a/src/microhttpd/md5.h
+++ b/src/microhttpd/md5.h
@@ -28,7 +28,7 @@
struct MD5Context
{
- uint32_t state[4]; /* state */
+ uint32_t state[4]; /* state */
uint64_t count; /* number of bytes, mod 2^64 */
uint8_t buffer[MD5_BLOCK_SIZE]; /* input buffer */
};
diff --git a/src/microhttpd/memorypool.c b/src/microhttpd/memorypool.c
index 57e49cf0..a4207a92 100644
--- a/src/microhttpd/memorypool.c
+++ b/src/microhttpd/memorypool.c
@@ -336,10 +336,10 @@ MHD_pool_reallocate (struct MemoryPool *pool,
{ /* "old" block is the last allocated block */
const size_t new_apos = ROUND_TO_ALIGN (old_offset + new_size);
if (! shrinking)
- { /* Grow in-place, check for enough space. */
+ { /* Grow in-place, check for enough
space. */
if ( (new_apos > pool->end) ||
- (new_apos < pool->pos) ) /* Value wrap */
- return NULL; /* No space */
+ (new_apos < pool->pos) ) /* Value wrap */
+ return NULL; /* No space */
}
/* Resized in-place */
pool->pos = new_apos;
diff --git a/src/microhttpd/mhd_mono_clock.c b/src/microhttpd/mhd_mono_clock.c
index fa548f6e..0bd9984e 100644
--- a/src/microhttpd/mhd_mono_clock.c
+++ b/src/microhttpd/mhd_mono_clock.c
@@ -254,8 +254,8 @@ MHD_monotonic_sec_counter_init (void)
LARGE_INTEGER freq;
LARGE_INTEGER perf_counter;
- QueryPerformanceFrequency (&freq); /* never fail on XP and later */
- QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
+ QueryPerformanceFrequency (&freq); /* never fail on XP and later */
+ QueryPerformanceCounter (&perf_counter); /* never fail on XP and later */
perf_freq = freq.QuadPart;
perf_start = perf_counter.QuadPart;
mono_clock_source = _MHD_CLOCK_PERFCOUNTER;
diff --git a/src/microhttpd/mhd_send.c b/src/microhttpd/mhd_send.c
index 1ff45231..f366ef67 100644
--- a/src/microhttpd/mhd_send.c
+++ b/src/microhttpd/mhd_send.c
@@ -405,7 +405,11 @@ MHD_send_on_connection2_ (struct MHD_Connection
*connection,
(0 == buffer_size) &&
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;
}
return ret;
@@ -434,6 +438,9 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection,
msg.msg_iovlen = 2;
ret = sendmsg (s, &msg, MAYBE_MSG_NOSIGNAL);
+ if ( (-1 == ret) &&
+ (EAGAIN == errno) )
+ return MHD_ERR_AGAIN_;
}
#elif HAVE_WRITEV
{
@@ -441,6 +448,9 @@ MHD_send_on_connection2_ (struct MHD_Connection *connection,
iovcnt = sizeof (vector) / sizeof (struct iovec);
ret = writev (s, vector, iovcnt);
+ if ( (-1 == ret) &&
+ (EAGAIN == errno) )
+ return MHD_ERR_AGAIN_;
}
#endif
diff --git a/src/microhttpd/mhd_threads.c b/src/microhttpd/mhd_threads.c
index 6e96f860..aa0ad571 100644
--- a/src/microhttpd/mhd_threads.c
+++ b/src/microhttpd/mhd_threads.c
@@ -49,7 +49,8 @@
#if defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || \
defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI)
# 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) || \
defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) \
diff --git a/src/microhttpd/postprocessor.c b/src/microhttpd/postprocessor.c
index 7cffeaea..eda1ae51 100644
--- a/src/microhttpd/postprocessor.c
+++ b/src/microhttpd/postprocessor.c
@@ -801,13 +801,13 @@ find_boundary (struct MHD_PostProcessor *pp,
'-',
pp->buffer_pos);
if (NULL == dash)
- (*ioffptr) += pp->buffer_pos; /* skip entire buffer */
+ (*ioffptr) += pp->buffer_pos; /* skip entire buffer */
else if (dash == buf)
- (*ioffptr)++; /* at least skip one byte */
+ (*ioffptr)++; /* at least skip one byte */
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 */
(*ioffptr) += 2 + blen;
diff --git a/src/microhttpd/response.c b/src/microhttpd/response.c
index 141372b9..9a21925a 100644
--- a/src/microhttpd/response.c
+++ b/src/microhttpd/response.c
@@ -263,9 +263,9 @@ MHD_get_response_headers (struct MHD_Response *response,
numHeaders++;
if ((NULL != iterator) &&
(MHD_NO == iterator (iterator_cls,
- pos->kind,
- pos->header,
- pos->value)))
+ pos->kind,
+ pos->header,
+ pos->value)))
break;
}
return numHeaders;
@@ -919,7 +919,11 @@ MHD_upgrade_action (struct MHD_UpgradeResponseHandle *urh,
#ifdef HTTPS_SUPPORT
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;
return MHD_YES;
}
diff --git a/src/microhttpd/sha256.h b/src/microhttpd/sha256.h
index f4c84e2c..4a90c233 100644
--- a/src/microhttpd/sha256.h
+++ b/src/microhttpd/sha256.h
@@ -55,7 +55,7 @@ struct sha256_ctx
{
uint32_t H[_SHA256_DIGEST_LENGTH]; /**< Intermediate hash value / digest
at end of calculation */
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 */
};
/**
diff --git a/src/microhttpd/test_daemon.c b/src/microhttpd/test_daemon.c
index caeaea3d..14a77832 100644
--- a/src/microhttpd/test_daemon.c
+++ b/src/microhttpd/test_daemon.c
@@ -83,9 +83,9 @@ ahc_nothing (void *cls,
const char *upload_data, size_t *upload_data_size,
void **unused)
{
- (void) cls; (void) connection; (void) url; /* 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) cls; (void) connection; (void) url; /* 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. */
return MHD_NO;
}
diff --git a/src/microhttpd/test_postprocessor_large.c
b/src/microhttpd/test_postprocessor_large.c
index 678de808..38fe650b 100644
--- a/src/microhttpd/test_postprocessor_large.c
+++ b/src/microhttpd/test_postprocessor_large.c
@@ -43,7 +43,7 @@ value_checker (void *cls,
const char *data, uint64_t off, size_t size)
{
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. */
#if 0
fprintf (stderr,
diff --git a/src/microhttpd/test_start_stop.c b/src/microhttpd/test_start_stop.c
index 79d80d24..9cd3abf2 100644
--- a/src/microhttpd/test_start_stop.c
+++ b/src/microhttpd/test_start_stop.c
@@ -44,9 +44,9 @@ ahc_echo (void *cls,
const char *upload_data, size_t *upload_data_size,
void **unused)
{
- (void) cls; (void) connection; (void) url; /* 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) cls; (void) connection; (void) url; /* 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. */
return MHD_NO;
}
diff --git a/src/microhttpd/test_str.c b/src/microhttpd/test_str.c
index a2f357b4..1e140cb6 100644
--- a/src/microhttpd/test_str.c
+++ b/src/microhttpd/test_str.c
@@ -50,9 +50,9 @@ static const char *const locale_names[] = {
"C",
"", /* System default locale */
#if defined(_WIN32) && ! defined(__CYGWIN__)
- ".OCP", /* W32 system default OEM code page */
- ".ACP", /* W32 system default ANSI code page */
- ".65001", /* UTF-8 */
+ ".OCP", /* W32 system default OEM code page */
+ ".ACP", /* W32 system default ANSI code page */
+ ".65001", /* UTF-8 */
".437",
".850",
".857",
@@ -455,50 +455,50 @@ static const struct two_neq_strs neq_strings[] = {
{D_STR_W_LEN ("zyxwvutsrqponwMLKJIHGFEDCBA"), D_STR_W_LEN (
"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\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\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 ("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\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\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."),
- 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 ("istanbul"), 0}, /* "istanbul" in CP857 */
- {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 ("\xc4\xb0stanbul"), /* "İstanbul" 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 ("DiyarbakIR"), 8}, /* "DiyarbakIR" in CP857 */
- {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 ("Diyarbak\xc4\xb1r"), /* "Diyarbakır" 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 */
+ 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 ("istanbul"), 0},
/* "istanbul" in CP857 */
+ {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 ("\xc4\xb0stanbul"),
/* "İstanbul" 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 ("DiyarbakIR"), 8},
/* "DiyarbakIR" in CP857 */
+ {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 ("Diyarbak\xc4\xb1r"),
/* "Diyarbakır" 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\x85\x91\x92\x8e\x82\x80\x9f \x91\x92\x90\x8e\x8a\x80."),
- 1},
/* "ТЕСТОВАЯ СТРОКА." in CP866 */
- {D_STR_W_LEN ("\xd2\xe5\xf1\xf2\xee\xe2\xe0\xff \xd1\xf2\xf0\xee\xea\xe0."),
/* "Тестовая Строка." in CP1251 */
+ 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\xc5\xd1\xd2\xce\xc2\xc0\xdf \xd1\xd2\xd0\xce\xca\xc0."),
- 1},
/* "ТЕСТОВАЯ СТРОКА." in CP1251 */
- {D_STR_W_LEN ("\xf4\xc5\xd3\xd4\xcf\xd7\xc1\xd1 \xf3\xd4\xd2\xcf\xcb\xc1."),
/* "Тестовая Строка." in KOI8-R */
+ 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\xe5\xf3\xf4\xef\xf7\xe1\xf1 \xf3\xf4\xf2\xef\xeb\xe1."),
- 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 */
+ 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\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"
- "\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"
- "\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},
/* numbers below and above limits */
- {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 ("255"), 3, 255}, /* 0xFF, UCHAR_MAX */
- {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 ("32768"), 5, 32768}, /* 0x8000, INT16_MAX+1 */
- {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 ("2147483647"), 10, 2147483647}, /* 0x7FFFFFFF, INT32_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 ("255"), 3, 255}, /* 0xFF, UCHAR_MAX */
+ {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 ("32768"), 5, 32768}, /* 0x8000, INT16_MAX+1 */
+ {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 ("2147483647"), 10, 2147483647}, /* 0x7FFFFFFF, INT32_MAX */
{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 ("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[] = {
D_STR_W_LEN ("zero"),
D_STR_W_LEN ("one"),
- 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 ("\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 ("\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 ("\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 ("\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 ("\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 ("\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 ("\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 */
};
/* 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},
/* 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 ("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 ("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 ("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 ("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 ("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 ("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 ("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 ("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 ("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 ("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 ("10000000000000000a"),
D_STR_W_LEN ("10000000000000000E"),
- D_STR_W_LEN ("100000000000000000 and nothing"), /* 0x10000000000000000,
UINT64_MAX+1 */
- D_STR_W_LEN ("100000000000000000xx"), /* 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 ("99999999999999999999"),
D_STR_W_LEN ("18446744073709551616abcd"),
D_STR_W_LEN ("20000000000000000000 suffix"),
diff --git a/src/microhttpd/test_upgrade_large.c
b/src/microhttpd/test_upgrade_large.c
index 8b721bc5..fb60ddd8 100644
--- a/src/microhttpd/test_upgrade_large.c
+++ b/src/microhttpd/test_upgrade_large.c
@@ -53,10 +53,164 @@
#include "test_helpers.h"
#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 \
-
"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
#include <gnutls/gnutls.h>
@@ -338,6 +492,7 @@ wr_handshake (struct wr_socket *s)
/**
* Send data to remote by socket.
+ *
* @param s the socket to use
* @param buf the buffer with data to send
* @param len the length of data in @a buf
@@ -351,15 +506,24 @@ wr_send (struct wr_socket *s,
size_t len)
{
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
if (wr_tls == s->t)
{
ssize_t ret;
+
if (! s->tls_connected && ! wr_handshake (s))
return -1;
-
- ret = gnutls_record_send (s->tls_s, buf, len);
+ ret = gnutls_record_send (s->tls_s,
+ buf,
+ len);
if (ret > 0)
return ret;
if (GNUTLS_E_AGAIN == ret)
@@ -591,7 +755,7 @@ kick_select ()
{
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 ();
}
+ if (0 != strncmp (text, buf, off + ret))
+ abort ();
}
if (0 != strncmp (text, buf, len))
abort ();
@@ -715,8 +881,10 @@ run_usock (void *cls)
{
struct MHD_UpgradeResponseHandle *urh = cls;
- MHD_upgrade_action (urh,
- MHD_UPGRADE_ACTION_CORK_OFF);
+ if (MHD_YES !=
+ MHD_upgrade_action (urh,
+ MHD_UPGRADE_ACTION_CORK_OFF))
+ abort ();
send_all (usock,
LARGE_STRING);
recv_all (usock,
@@ -953,7 +1121,7 @@ run_mhd_select_loop (struct MHD_Daemon *daemon)
&ws,
&es);
}
- MHD_itc_destroy_ (kicker);
+ (void) MHD_itc_destroy_ (kicker);
MHD_itc_set_invalid_ (kicker);
}
@@ -991,7 +1159,6 @@ run_mhd_epoll_loop (struct MHD_Daemon *daemon)
MHD_UNSIGNED_LONG_LONG to;
struct timeval tv;
int ret;
- char drain[128];
di = MHD_get_daemon_info (daemon,
MHD_DAEMON_INFO_EPOLL_FD);
@@ -1023,7 +1190,7 @@ run_mhd_epoll_loop (struct MHD_Daemon *daemon)
MHD_itc_clear_ (kicker);
MHD_run (daemon);
}
- MHD_itc_destroy_ (kicker);
+ (void) MHD_itc_destroy_ (kicker);
MHD_itc_set_invalid_ (kicker);
}
@@ -1203,7 +1370,6 @@ main (int argc,
if (has_param (argc, argv, "-q") ||
has_param (argc, argv, "--quiet"))
verbose = 0;
-
if (test_tls)
{
#ifdef HTTPS_SUPPORT
@@ -1247,7 +1413,6 @@ main (int argc,
return 77;
#endif /* ! HTTPS_SUPPORT */
}
-
/* run tests */
if (verbose)
printf ("Starting HTTP \"Upgrade\" tests with %s connections.\n",
@@ -1262,7 +1427,6 @@ main (int argc,
res);
else if (verbose)
printf ("PASSED: Upgrade with external select.\n");
-
/* Try external auto */
res = test_upgrade (MHD_USE_AUTO,
0);
diff --git a/src/microhttpd/tsearch.c b/src/microhttpd/tsearch.c
index 78f37608..1d74dcce 100644
--- a/src/microhttpd/tsearch.c
+++ b/src/microhttpd/tsearch.c
@@ -24,7 +24,7 @@ typedef struct node
/* $NetBSD: tsearch.c,v 1.5 2005/11/29 03:12:00 christos Exp $ */
/* find or insert datum into search tree */
void *
-tsearch (const void *vkey, /* key to be located */
+tsearch (const void *vkey, /* key to be located */
void **vrootp, /* address of tree root */
int (*compar)(const void *, const void *))
{
@@ -38,19 +38,19 @@ tsearch (const void *vkey, /* key to be located */
{ /* Knuth's T1: */
int r;
- if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
- return *rootp; /* we found it! */
+ if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
+ return *rootp; /* we found it! */
rootp = (r < 0) ?
&(*rootp)->llink : /* T3: follow left 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)
- { /* make new node */
- *rootp = q; /* link new node to old */
- q->key = vkey; /* initialize new node */
+ { /* make new node */
+ *rootp = q; /* link new node to old */
+ q->key = vkey; /* initialize new node */
q->llink = q->rlink = NULL;
}
return q;
@@ -73,8 +73,8 @@ tfind (const void *vkey, /* key to be found */
{ /* T1: */
int r;
- if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
- return *rootp; /* key found */
+ if ((r = (*compar)(vkey, (*rootp)->key)) == 0) /* T2: */
+ return *rootp; /* key found */
rootp = (r < 0) ?
&(*rootp)->llink : /* T3: follow left branch */
&(*rootp)->rlink; /* T4: follow right branch */
@@ -112,17 +112,17 @@ tdelete (const void *__restrict vkey,
&(*rootp)->llink : /* follow llink branch */
&(*rootp)->rlink; /* follow rlink branch */
if (*rootp == NULL)
- return NULL; /* key not found */
+ return NULL; /* key not found */
}
- r = (*rootp)->rlink; /* D1: */
- if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
+ r = (*rootp)->rlink; /* D1: */
+ if ((q = (*rootp)->llink) == NULL) /* Left NULL? */
{
q = r;
}
else if (r != NULL)
{ /* Right link is NULL? */
if (r->llink == NULL)
- { /* D2: Find successor */
+ { /* D2: Find successor */
r->llink = q;
q = r;
}
@@ -135,7 +135,7 @@ tdelete (const void *__restrict vkey,
q->rlink = (*rootp)->rlink;
}
}
- free (*rootp); /* D4: Free node */
+ free (*rootp); /* D4: Free node */
*rootp = q; /* link parent to new node */
return p;
}
diff --git a/src/testcurl/https/test_empty_response.c
b/src/testcurl/https/test_empty_response.c
index 8e1ef1a8..2cd159f9 100644
--- a/src/testcurl/https/test_empty_response.c
+++ b/src/testcurl/https/test_empty_response.c
@@ -49,7 +49,7 @@ ahc_echo (void *cls,
{
struct MHD_Response *response;
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. */
response = MHD_create_response_from_buffer (0, NULL,
diff --git a/src/testcurl/https/test_https_get.c
b/src/testcurl/https/test_https_get.c
index b8de81a9..ab0dd9cf 100644
--- a/src/testcurl/https/test_https_get.c
+++ b/src/testcurl/https/test_https_get.c
@@ -107,9 +107,9 @@ ahc_empty (void *cls,
(void) cls;
(void) url;
(void) url;
- (void) version; /* Unused. Silent compiler warning. */
+ (void) version; /* Unused. Silent compiler warning. */
(void) upload_data;
- (void) upload_data_size; /* Unused. Silent compiler warning. */
+ (void) upload_data_size; /* Unused. Silent compiler warning. */
if (0 != strcasecmp ("GET",
method))
diff --git a/src/testcurl/https/test_https_session_info.c
b/src/testcurl/https/test_https_session_info.c
index f8b37cff..f80ea4cd 100644
--- a/src/testcurl/https/test_https_session_info.c
+++ b/src/testcurl/https/test_https_session_info.c
@@ -50,7 +50,7 @@ query_session_ahc (void *cls, struct MHD_Connection
*connection,
struct MHD_Response *response;
enum MHD_Result ret;
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. */
if (NULL == *ptr)
diff --git a/src/testcurl/https/tls_test_common.c
b/src/testcurl/https/tls_test_common.c
index 1d24c701..fc998317 100644
--- a/src/testcurl/https/tls_test_common.c
+++ b/src/testcurl/https/tls_test_common.c
@@ -189,7 +189,7 @@ http_ahc (void *cls,
static int aptr;
struct MHD_Response *response;
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. */
if (0 != strcmp (method, MHD_HTTP_METHOD_GET))
diff --git a/src/testcurl/test_digestauth.c b/src/testcurl/test_digestauth.c
index 9b33eb9b..6a82c5a2 100644
--- a/src/testcurl/test_digestauth.c
+++ b/src/testcurl/test_digestauth.c
@@ -91,7 +91,7 @@ ahc_echo (void *cls,
const char *password = "testpass";
const char *realm = "test@example.com";
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) upload_data_size; (void) unused; /* Unused. Silent compiler
warning. */
diff --git a/src/testcurl/test_digestauth_with_arguments.c
b/src/testcurl/test_digestauth_with_arguments.c
index 70d5f644..3d90f0db 100644
--- a/src/testcurl/test_digestauth_with_arguments.c
+++ b/src/testcurl/test_digestauth_with_arguments.c
@@ -85,7 +85,7 @@ ahc_echo (void *cls,
const char *password = "testpass";
const char *realm = "test@example.com";
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) upload_data_size; (void) unused; /* Unused. Silent compiler
warning. */
diff --git a/src/testcurl/test_get.c b/src/testcurl/test_get.c
index 91efdefd..964cfe5f 100644
--- a/src/testcurl/test_get.c
+++ b/src/testcurl/test_get.c
@@ -730,9 +730,9 @@ ahc_empty (void *cls,
(void) cls;
(void) url;
(void) url;
- (void) version; /* Unused. Silent compiler warning. */
+ (void) version; /* Unused. Silent compiler warning. */
(void) upload_data;
- (void) upload_data_size; /* Unused. Silent compiler warning. */
+ (void) upload_data_size; /* Unused. Silent compiler warning. */
if (0 != strcasecmp ("GET", method))
return MHD_NO; /* unexpected method */
diff --git a/src/testcurl/test_get_chunked.c b/src/testcurl/test_get_chunked.c
index aa60e2f8..cab4e1b5 100644
--- a/src/testcurl/test_get_chunked.c
+++ b/src/testcurl/test_get_chunked.c
@@ -121,7 +121,7 @@ ahc_echo (void *cls,
enum MHD_Result ret;
(void) url;
- (void) version; /* Unused. Silent compiler warning. */
+ (void) version; /* Unused. Silent compiler warning. */
(void) upload_data;
(void) upload_data_size; /* Unused. Silent compiler warning. */
diff --git a/src/testcurl/test_get_empty.c b/src/testcurl/test_get_empty.c
index 79ce49e8..52718acb 100644
--- a/src/testcurl/test_get_empty.c
+++ b/src/testcurl/test_get_empty.c
@@ -687,9 +687,9 @@ ahc_empty (void *cls,
(void) cls;
(void) url;
(void) url;
- (void) version; /* Unused. Silence compiler warning. */
+ (void) version; /* Unused. Silence compiler warning. */
(void) upload_data;
- (void) upload_data_size; /* Unused. Silent compiler warning. */
+ (void) upload_data_size; /* Unused. Silent compiler warning. */
if (0 != strcasecmp ("GET", method))
return MHD_NO; /* unexpected method */
diff --git a/src/testcurl/test_post.c b/src/testcurl/test_post.c
index 675f8db6..d591ab8b 100644
--- a/src/testcurl/test_post.c
+++ b/src/testcurl/test_post.c
@@ -573,7 +573,7 @@ ahc_cancel (void *cls,
{
struct MHD_Response *response;
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. */
if (0 != strcasecmp ("POST", method))
diff --git a/src/testcurl/test_post_loop.c b/src/testcurl/test_post_loop.c
index 0eaf2730..95e1a0f3 100644
--- a/src/testcurl/test_post_loop.c
+++ b/src/testcurl/test_post_loop.c
@@ -84,7 +84,7 @@ ahc_echo (void *cls,
static int marker;
struct MHD_Response *response;
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. */
if (0 != strcmp ("POST", method))
diff --git a/src/testcurl/test_quiesce_stream.c
b/src/testcurl/test_quiesce_stream.c
index 5a3e601e..f20ebcac 100644
--- a/src/testcurl/test_quiesce_stream.c
+++ b/src/testcurl/test_quiesce_stream.c
@@ -143,7 +143,7 @@ http_AccessHandlerCallback (void *cls,
void **con_cls)
{
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) upload_data_size; /* Unused. Silent compiler
warning. */
diff --git a/src/testcurl/test_termination.c b/src/testcurl/test_termination.c
index 5541ae30..01c4bf59 100644
--- a/src/testcurl/test_termination.c
+++ b/src/testcurl/test_termination.c
@@ -57,7 +57,7 @@ connection_handler (void *cls,
void **ptr)
{
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) upload_data_size; /* Unused. Silent compiler
warning. */
diff --git a/src/testzzuf/test_get_chunked.c b/src/testzzuf/test_get_chunked.c
index 9a6536c0..ed974828 100644
--- a/src/testzzuf/test_get_chunked.c
+++ b/src/testzzuf/test_get_chunked.c
@@ -104,7 +104,7 @@ ahc_echo (void *cls,
enum MHD_Result ret;
(void) url;
- (void) version; /* Unused. Silent compiler warning. */
+ (void) version; /* Unused. Silent compiler warning. */
(void) upload_data;
(void) upload_data_size; /* Unused. Silent compiler warning. */
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libmicrohttpd] branch master updated: fix transmission stall issue with upgraded TLS connections reported by Nguyen Xuan Viet on the mailinglist,
gnunet <=