chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src/event.c: introduce ADD_POLLFD
[adns]
/
src
/
event.c
diff --git
a/src/event.c
b/src/event.c
index 433a4d084c09e69beb3870bc8747d5ec5e60b434..04ba26bdcb1a10797af4ecd2b7ec4f7b2992865e 100644
(file)
--- a/
src/event.c
+++ b/
src/event.c
@@
-304,29
+304,35
@@
void adns_processtimeouts(adns_state ads, const struct timeval *now) {
int adns__pollfds(adns_state ads, struct pollfd pollfds_buf[MAX_POLLFDS]) {
/* Returns the number of entries filled in. Always zeroes revents. */
int adns__pollfds(adns_state ads, struct pollfd pollfds_buf[MAX_POLLFDS]) {
/* Returns the number of entries filled in. Always zeroes revents. */
+ int nwanted=0;
+#define ADD_POLLFD(wantfd, wantevents) do{ \
+ pollfds_buf[nwanted].fd= (wantfd); \
+ pollfds_buf[nwanted].events= (wantevents); \
+ pollfds_buf[nwanted].revents= 0; \
+ nwanted++; \
+ }while(0)
assert(MAX_POLLFDS==2);
assert(MAX_POLLFDS==2);
- pollfds_buf[0].fd= ads->udpsocket;
- pollfds_buf[0].events= POLLIN;
- pollfds_buf[0].revents= 0;
+ ADD_POLLFD(ads->udpsocket, POLLIN);
switch (ads->tcpstate) {
case server_disconnected:
case server_broken:
switch (ads->tcpstate) {
case server_disconnected:
case server_broken:
-
return 1
;
+
break
;
case server_connecting:
case server_connecting:
-
pollfds_buf[1].events= POLLOUT
;
+
ADD_POLLFD(ads->tcpsocket, POLLOUT)
;
break;
case server_ok:
break;
case server_ok:
- pollfds_buf[1].events=
-
ads->tcpsend.used ? POLLIN|POLLOUT|POLLPRI : POLLIN|POLLPRI
;
+ ADD_POLLFD(ads->tcpsocket,
+
ads->tcpsend.used ? POLLIN|POLLOUT|POLLPRI : POLLIN|POLLPRI)
;
break;
default:
abort();
}
break;
default:
abort();
}
- pollfds_buf[1].fd= ads->tcpsocket;
- return 2;
+ assert(nwanted<=MAX_POLLFDS);
+#undef ADD_POLLFD
+ return nwanted;
}
int adns_processreadable(adns_state ads, int fd, const struct timeval *now) {
}
int adns_processreadable(adns_state ads, int fd, const struct timeval *now) {