mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-25 04:17:42 +00:00
MAJOR: connection: replace direct I/O callbacks with the connection callback
Almost all direct I/O callbacks have been changed to use the connection callback instead. Only the TCP connection validation remains.
This commit is contained in:
parent
59f98393bb
commit
d2274c6536
@ -40,6 +40,7 @@
|
||||
#include <proto/acl.h>
|
||||
#include <proto/arg.h>
|
||||
#include <proto/buffers.h>
|
||||
#include <proto/connection.h>
|
||||
#include <proto/frontend.h>
|
||||
#include <proto/log.h>
|
||||
#include <proto/port_range.h>
|
||||
@ -476,14 +477,13 @@ int tcp_connect_server(struct stream_interface *si)
|
||||
if ((si->ob->flags & BF_OUT_EMPTY) || si->send_proxy_ofs) {
|
||||
fdtab[fd].cb[DIR_RD].f = tcp_connect_read;
|
||||
fdtab[fd].cb[DIR_WR].f = tcp_connect_write;
|
||||
fdtab[fd].iocb = NULL;
|
||||
}
|
||||
else {
|
||||
fdtab[fd].cb[DIR_RD].f = si_data(si)->read;
|
||||
fdtab[fd].cb[DIR_WR].f = si_data(si)->write;
|
||||
fdtab[fd].iocb = NULL;
|
||||
fdtab[fd].cb[DIR_RD].f = NULL;
|
||||
fdtab[fd].cb[DIR_WR].f = NULL;
|
||||
}
|
||||
|
||||
fdtab[fd].iocb = conn_fd_handler;
|
||||
fd_insert(fd);
|
||||
EV_FD_SET(fd, DIR_WR); /* for connect status */
|
||||
|
||||
@ -618,8 +618,8 @@ static int tcp_connect_write(int fd)
|
||||
/* The FD is ready now, we can hand the handlers to the socket layer
|
||||
* and forward the event there to start working on the socket.
|
||||
*/
|
||||
fdtab[fd].cb[DIR_RD].f = si_data(si)->read;
|
||||
fdtab[fd].cb[DIR_WR].f = si_data(si)->write;
|
||||
fdtab[fd].cb[DIR_RD].f = NULL;
|
||||
fdtab[fd].cb[DIR_WR].f = NULL;
|
||||
si->conn.flags &= ~CO_FL_WAIT_L4_CONN;
|
||||
si->exp = TICK_ETERNITY;
|
||||
return si_data(si)->write(fd);
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include <proto/backend.h>
|
||||
#include <proto/buffers.h>
|
||||
#include <proto/checks.h>
|
||||
#include <proto/connection.h>
|
||||
#include <proto/dumpstats.h>
|
||||
#include <proto/freq_ctr.h>
|
||||
#include <proto/frontend.h>
|
||||
@ -282,9 +283,9 @@ int session_accept(struct listener *l, int cfd, struct sockaddr_storage *addr)
|
||||
fd_insert(cfd);
|
||||
fdtab[cfd].owner = &s->si[0];
|
||||
fdtab[cfd].flags = 0;
|
||||
fdtab[cfd].cb[DIR_RD].f = si_data(&s->si[0])->read;
|
||||
fdtab[cfd].cb[DIR_WR].f = si_data(&s->si[0])->write;
|
||||
fdtab[cfd].iocb = NULL;
|
||||
fdtab[cfd].cb[DIR_RD].f = NULL;
|
||||
fdtab[cfd].cb[DIR_WR].f = NULL;
|
||||
fdtab[cfd].iocb = conn_fd_handler;
|
||||
EV_FD_SET(cfd, DIR_RD);
|
||||
|
||||
if (p->accept && (ret = p->accept(s)) <= 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user