aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-06-22 08:25:00 +0000
committerChristian Grothoff <christian@grothoff.org>2011-06-22 08:25:00 +0000
commit21bf15d021e2215c337141ec18c121b983687d46 (patch)
tree69a61aa85e6de3615fd183917617a4892f5ac667
parent9b84b053cf67a5ced71ef1b1133ae65cbd0a6a16 (diff)
downloadlibmicrohttpd-21bf15d021e2215c337141ec18c121b983687d46.tar.gz
libmicrohttpd-21bf15d021e2215c337141ec18c121b983687d46.zip
only call MHD_get_timeout if not in thread-per-connection mode
-rw-r--r--src/daemon/connection.c12
-rw-r--r--src/daemon/daemon.c26
2 files changed, 24 insertions, 14 deletions
diff --git a/src/daemon/connection.c b/src/daemon/connection.c
index 3b6cc572..08dcdf7a 100644
--- a/src/daemon/connection.c
+++ b/src/daemon/connection.c
@@ -888,7 +888,7 @@ MHD_connection_get_pollfd (struct MHD_Connection *connection, struct MHD_Pollfd
888 if (MHD_YES == connection->read_closed) 888 if (MHD_YES == connection->read_closed)
889 { 889 {
890 CONNECTION_CLOSE_ERROR (connection, 890 CONNECTION_CLOSE_ERROR (connection,
891 "Connection closed while reading request\n"); 891 NULL);
892 continue; 892 continue;
893 } 893 }
894 p->events |= MHD_POLL_ACTION_IN; 894 p->events |= MHD_POLL_ACTION_IN;
@@ -1954,7 +1954,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
1954 if (connection->read_closed) 1954 if (connection->read_closed)
1955 { 1955 {
1956 CONNECTION_CLOSE_ERROR (connection, 1956 CONNECTION_CLOSE_ERROR (connection,
1957 "Connection closed while reading request\n"); 1957 NULL);
1958 continue; 1958 continue;
1959 } 1959 }
1960 break; 1960 break;
@@ -1973,7 +1973,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
1973 if (connection->read_closed) 1973 if (connection->read_closed)
1974 { 1974 {
1975 CONNECTION_CLOSE_ERROR (connection, 1975 CONNECTION_CLOSE_ERROR (connection,
1976 "Connection closed while reading request\n"); 1976 NULL);
1977 continue; 1977 continue;
1978 } 1978 }
1979 break; 1979 break;
@@ -2001,7 +2001,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
2001 if (connection->read_closed) 2001 if (connection->read_closed)
2002 { 2002 {
2003 CONNECTION_CLOSE_ERROR (connection, 2003 CONNECTION_CLOSE_ERROR (connection,
2004 "Connection closed while reading request\n"); 2004 NULL);
2005 continue; 2005 continue;
2006 } 2006 }
2007 break; 2007 break;
@@ -2077,7 +2077,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
2077 if (connection->read_closed) 2077 if (connection->read_closed)
2078 { 2078 {
2079 CONNECTION_CLOSE_ERROR (connection, 2079 CONNECTION_CLOSE_ERROR (connection,
2080 "Connection closed while reading request\n"); 2080 NULL);
2081 continue; 2081 continue;
2082 } 2082 }
2083 break; 2083 break;
@@ -2105,7 +2105,7 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
2105 if (connection->read_closed) 2105 if (connection->read_closed)
2106 { 2106 {
2107 CONNECTION_CLOSE_ERROR (connection, 2107 CONNECTION_CLOSE_ERROR (connection,
2108 "Connection closed while reading request\n"); 2108 NULL);
2109 continue; 2109 continue;
2110 } 2110 }
2111 break; 2111 break;
diff --git a/src/daemon/daemon.c b/src/daemon/daemon.c
index f4273453..ee796fd8 100644
--- a/src/daemon/daemon.c
+++ b/src/daemon/daemon.c
@@ -1248,6 +1248,13 @@ MHD_get_timeout (struct MHD_Daemon *daemon,
1248 struct MHD_Connection *pos; 1248 struct MHD_Connection *pos;
1249 unsigned int dto; 1249 unsigned int dto;
1250 1250
1251 if (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION))
1252 {
1253#if HAVE_MESSAGES
1254 MHD_DLOG (daemon, "Illegal call to MHD_get_timeout\n");
1255#endif
1256 return MHD_NO;
1257 }
1251 dto = daemon->connection_timeout; 1258 dto = daemon->connection_timeout;
1252 if (0 == dto) 1259 if (0 == dto)
1253 return MHD_NO; 1260 return MHD_NO;
@@ -1334,7 +1341,8 @@ MHD_select (struct MHD_Daemon *daemon,
1334 timeout.tv_sec = 0; 1341 timeout.tv_sec = 0;
1335 tv = &timeout; 1342 tv = &timeout;
1336 } 1343 }
1337 else if (MHD_YES == MHD_get_timeout (daemon, &ltimeout)) 1344 else if ( (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) &&
1345 (MHD_YES == MHD_get_timeout (daemon, &ltimeout)) )
1338 { 1346 {
1339 /* ltimeout is in ms */ 1347 /* ltimeout is in ms */
1340 timeout.tv_usec = (ltimeout % 1000) * 1000; 1348 timeout.tv_usec = (ltimeout % 1000) * 1000;
@@ -1429,7 +1437,8 @@ MHD_poll_all (struct MHD_Daemon *daemon,
1429 } 1437 }
1430 if (may_block == MHD_NO) 1438 if (may_block == MHD_NO)
1431 timeout = 0; 1439 timeout = 0;
1432 else if (MHD_YES != MHD_get_timeout (daemon, &ltimeout)) 1440 else if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) ||
1441 (MHD_YES != MHD_get_timeout (daemon, &ltimeout)) )
1433 timeout = -1; 1442 timeout = -1;
1434 else 1443 else
1435 timeout = (ltimeout > INT_MAX) ? INT_MAX : (int) ltimeout; 1444 timeout = (ltimeout > INT_MAX) ? INT_MAX : (int) ltimeout;
@@ -1502,7 +1511,6 @@ MHD_poll_listen_socket (struct MHD_Daemon *daemon,
1502 int may_block) 1511 int may_block)
1503{ 1512{
1504 struct pollfd p; 1513 struct pollfd p;
1505 unsigned MHD_LONG_LONG ltimeout;
1506 int timeout; 1514 int timeout;
1507 1515
1508 memset (&p, 0, sizeof (p)); 1516 memset (&p, 0, sizeof (p));
@@ -1511,10 +1519,8 @@ MHD_poll_listen_socket (struct MHD_Daemon *daemon,
1511 p.revents = 0; 1519 p.revents = 0;
1512 if (may_block == MHD_NO) 1520 if (may_block == MHD_NO)
1513 timeout = 0; 1521 timeout = 0;
1514 else if (MHD_YES != MHD_get_timeout (daemon, &ltimeout))
1515 timeout = -1;
1516 else 1522 else
1517 timeout = (ltimeout > INT_MAX) ? INT_MAX : (int) ltimeout; 1523 timeout = -1;
1518#ifdef __CYGWIN__ 1524#ifdef __CYGWIN__
1519 /* See https://gnunet.org/bugs/view.php?id=1674 */ 1525 /* See https://gnunet.org/bugs/view.php?id=1674 */
1520 timeout = ( (timeout > 2000) || (timeout < 0) ) ? 2000 : timeout; 1526 timeout = ( (timeout > 2000) || (timeout < 0) ) ? 2000 : timeout;
@@ -1582,9 +1588,13 @@ MHD_run (struct MHD_Daemon *daemon)
1582 || (0 != (daemon->options & MHD_USE_SELECT_INTERNALLY))) 1588 || (0 != (daemon->options & MHD_USE_SELECT_INTERNALLY)))
1583 return MHD_NO; 1589 return MHD_NO;
1584 if ((daemon->options & MHD_USE_POLL) == 0) 1590 if ((daemon->options & MHD_USE_POLL) == 0)
1585 MHD_select (daemon, MHD_NO); 1591 {
1592 MHD_select (daemon, MHD_NO);
1593 }
1586 else 1594 else
1587 MHD_poll (daemon, MHD_NO); 1595 {
1596 MHD_poll (daemon, MHD_NO);
1597 }
1588 MHD_cleanup_connections (daemon); 1598 MHD_cleanup_connections (daemon);
1589 return MHD_YES; 1599 return MHD_YES;
1590} 1600}