MEDIUM: connections: Change struct wait_list to wait_event.
When subscribing, we don't need to provide a list element, only the h2 mux
needs it. So instead, Add a list element to struct h2s, and use it when a
list is needed.
This forces us to use the unsubscribe method, since we can't just unsubscribe
by using LIST_DEL anymore.
This patch is larger than it should be because it includes some renaming.
diff --git a/include/types/checks.h b/include/types/checks.h
index d148e3b..e0a4bd6 100644
--- a/include/types/checks.h
+++ b/include/types/checks.h
@@ -184,7 +184,7 @@
char **envp; /* the environment to use if running a process-based check */
struct pid_list *curpid; /* entry in pid_list used for current process-based test, or -1 if not in test */
struct sockaddr_storage addr; /* the address to check */
- struct wait_list wait_list; /* Waiting for I/O events */
+ struct wait_event wait_list; /* Waiting for I/O events */
char *sni; /* Server name */
};
diff --git a/include/types/connection.h b/include/types/connection.h
index 26f9bed..20daa43 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -50,9 +50,8 @@
SUB_CAN_RECV = 0x00000002, /* Schedule the tasklet when we can recv more */
};
-struct wait_list {
+struct wait_event {
struct tasklet *task;
- struct list list;
void *handle; /* To be used by the callee */
int wait_reason;
};
@@ -404,9 +403,8 @@
enum obj_type *target; /* the target to connect to (server, proxy, applet, ...) */
/* second cache line */
- struct list send_wait_list; /* list of tasks to wake when we're ready to send */
- struct list recv_wait_list; /* list of tasks to wake when we're ready to recv */
- struct list sendrecv_wait_list; /* list of tasks to wake when we're ready to either send or recv */
+ struct wait_event *send_wait; /* Task to wake when we're ready to send */
+ struct wait_event *recv_wait; /* Task to wake when we're ready to recv */
struct list list; /* attach point to various connection lists (idle, ...) */
int xprt_st; /* transport layer state, initialized to zero */
int tmp_early_data; /* 1st byte of early data, if any */
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h
index eae1926..76ed72e 100644
--- a/include/types/stream_interface.h
+++ b/include/types/stream_interface.h
@@ -101,7 +101,7 @@
unsigned int err_type; /* first error detected, one of SI_ET_* */
int conn_retries; /* number of connect retries left */
unsigned int hcto; /* half-closed timeout (0 = unset) */
- struct wait_list wait_list; /* We're in a wait list */
+ struct wait_event wait_event; /* We're in a wait list */
};
/* operations available on a stream-interface */