[srvx-commits] CVS: services/src ioset.c,1.13,1.14 ioset.h,1.7,1.8 sockcheck.c,1.82,1.83
Brought to you by:
entrope
|
From: Entrope <en...@us...> - 2003-01-07 04:31:17
|
Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv28667/src
Modified Files:
ioset.c ioset.h sockcheck.c
Log Message:
make ioset_connect() accept a data pointer also, in case the connect callback returns immediately
Index: ioset.c
===================================================================
RCS file: /cvsroot/srvx/services/src/ioset.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** ioset.c 31 Oct 2002 03:46:07 -0000 1.13
--- ioset.c 7 Jan 2003 04:31:12 -0000 1.14
***************
*** 127,131 ****
struct io_fd *
! ioset_connect(struct sockaddr *local, unsigned int sa_size, const char *peer, unsigned int port, int blocking, void (*connect_cb)(struct io_fd *fd, int error)) {
int fd, res;
struct io_fd *io_fd;
--- 127,131 ----
struct io_fd *
! ioset_connect(struct sockaddr *local, unsigned int sa_size, const char *peer, unsigned int port, int blocking, void *data, void (*connect_cb)(struct io_fd *fd, int error)) {
int fd, res;
struct io_fd *io_fd;
***************
*** 165,168 ****
--- 165,169 ----
return NULL;
}
+ io_fd->data = data;
io_fd->connect_cb = connect_cb;
if (res < 0) {
Index: ioset.h
===================================================================
RCS file: /cvsroot/srvx/services/src/ioset.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** ioset.h 31 Oct 2002 03:46:07 -0000 1.7
--- ioset.h 7 Jan 2003 04:31:12 -0000 1.8
***************
*** 50,54 ****
struct io_fd *ioset_add(int fd);
! struct io_fd *ioset_connect(struct sockaddr *local, unsigned int sa_size, const char *hostname, unsigned int port, int blocking, void (*connect_cb)(struct io_fd *fd, int error));
void ioset_run(void);
void ioset_write(struct io_fd *fd, const char *buf, unsigned int nbw);
--- 50,54 ----
struct io_fd *ioset_add(int fd);
! struct io_fd *ioset_connect(struct sockaddr *local, unsigned int sa_size, const char *hostname, unsigned int port, int blocking, void *data, void (*connect_cb)(struct io_fd *fd, int error));
void ioset_run(void);
void ioset_write(struct io_fd *fd, const char *buf, unsigned int nbw);
Index: sockcheck.c
===================================================================
RCS file: /cvsroot/srvx/services/src/sockcheck.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -C2 -r1.82 -r1.83
*** sockcheck.c 6 Nov 2002 23:53:01 -0000 1.82
--- sockcheck.c 7 Jan 2003 04:31:13 -0000 1.83
***************
*** 634,645 ****
do {
client->state = client->tests->list[client->test_index];
! client->fd = io_fd = ioset_connect((struct sockaddr*)sockcheck_conf.local_addr, sizeof(struct sockaddr), client->addr->hostname, client->state->port, 0, sockcheck_connected);
if (!io_fd) {
client->test_index++;
continue;
}
- client->read_pos = 0;
- client->read_used = 0;
- io_fd->data = client;
io_fd->readable_cb = sockcheck_readable;
timeq_add(now + client->state->timeout, sockcheck_timeout_client, client);
--- 634,644 ----
do {
client->state = client->tests->list[client->test_index];
! client->read_pos = 0;
! client->read_used = 0;
! client->fd = io_fd = ioset_connect((struct sockaddr*)sockcheck_conf.local_addr, sizeof(struct sockaddr), client->addr->hostname, client->state->port, 0, client, sockcheck_connected);
if (!io_fd) {
client->test_index++;
continue;
}
io_fd->readable_cb = sockcheck_readable;
timeq_add(now + client->state->timeout, sockcheck_timeout_client, client);
***************
*** 686,693 ****
sci = dict_find(checked_ip_dict, buff, NULL);
if (sci) {
! int max_age = (sci->decision == REJECT) ? sockcheck_conf.gline_duration : sockcheck_conf.max_cache_age;
! if ((sci->last_touched + max_age) >= now) {
! if (sci->decision == REJECT) sockcheck_issue_gline(sci);
return;
}
dict_remove(checked_ip_dict, sci->hostname);
--- 685,701 ----
sci = dict_find(checked_ip_dict, buff, NULL);
if (sci) {
! switch (sci->decision) {
! case CHECKING:
! /* We are already checking this host. */
return;
+ case ACCEPT:
+ if ((sci->last_touched + sockcheck_conf.max_cache_age) >= (unsigned)now) return;
+ break;
+ case REJECT:
+ if ((sci->last_touched + sockcheck_conf.gline_duration) >= (unsigned)now) {
+ sockcheck_issue_gline(sci);
+ return;
+ }
+ break;
}
dict_remove(checked_ip_dict, sci->hostname);
|