projects
/
project
/
uhttpd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mimetypes: add json and jsonp (distinct from js)
[project/uhttpd.git]
/
listen.c
diff --git
a/listen.c
b/listen.c
index
d51e600
..
adf8b16
100644
(file)
--- a/
listen.c
+++ b/
listen.c
@@
-52,12
+52,12
@@
static void uh_block_listener(struct listener *l)
l->blocked = true;
}
l->blocked = true;
}
-
void uh_unblock_listeners(void
)
+
static void uh_poll_listeners(struct uloop_timeout *timeout
)
{
struct listener *l;
{
struct listener *l;
- if ((!n_blocked && conf.max_
request
s) ||
- n_clients >= conf.max_
request
s)
+ if ((!n_blocked && conf.max_
connection
s) ||
+ n_clients >= conf.max_
connection
s)
return;
list_for_each_entry(l, &listeners, list) {
return;
list_for_each_entry(l, &listeners, list) {
@@
-65,7
+65,7
@@
void uh_unblock_listeners(void)
continue;
l->fd.cb(&l->fd, ULOOP_READ);
continue;
l->fd.cb(&l->fd, ULOOP_READ);
- if (n_clients >= conf.max_
request
s)
+ if (n_clients >= conf.max_
connection
s)
break;
n_blocked--;
break;
n_blocked--;
@@
-74,6
+74,15
@@
void uh_unblock_listeners(void)
}
}
}
}
+void uh_unblock_listeners(void)
+{
+ static struct uloop_timeout poll_timer = {
+ .cb = uh_poll_listeners
+ };
+
+ uloop_timeout_set(&poll_timer, 1);
+}
+
static void listener_cb(struct uloop_fd *fd, unsigned int events)
{
struct listener *l = container_of(fd, struct listener, fd);
static void listener_cb(struct uloop_fd *fd, unsigned int events)
{
struct listener *l = container_of(fd, struct listener, fd);
@@
-83,7
+92,7
@@
static void listener_cb(struct uloop_fd *fd, unsigned int events)
break;
}
break;
}
- if (conf.max_
requests && n_clients >= conf.max_request
s)
+ if (conf.max_
connections && n_clients >= conf.max_connection
s)
uh_block_listener(l);
}
uh_block_listener(l);
}