/**
* IPv4 addresses DLL head
*/
- struct IPv4HttpAddressWrapper *ipv4_addr_head;
+ struct HttpAddressWrapper *addr_head;
/**
* IPv4 addresses DLL tail
*/
- struct IPv4HttpAddressWrapper *ipv4_addr_tail;
+ struct HttpAddressWrapper *addr_tail;
+
/**
- * IPv6 addresses DLL head
+ * Plugin configuration
+ * --------------------
*/
- struct IPv6HttpAddressWrapper *ipv6_addr_head;
/**
- * IPv6 addresses DLL tail
+ * External hostname the plugin can be connected to, can be different to
+ * the host's FQDN, used e.g. for reverse proxying
*/
- struct IPv6HttpAddressWrapper *ipv6_addr_tail;
+ char *external_hostname;
/**
- * Plugin configuration
- * --------------------
+ * External hostname the plugin can be connected to, can be different to
+ * the host's FQDN, used e.g. for reverse proxying
+ */
+ struct HttpAddress *ext_addr;
+
+ /**
+ * External address length
+ */
+ size_t ext_addr_len;
+
+ /**
+ * Task calling transport service about external address
*/
+ GNUNET_SCHEDULER_TaskIdentifier notify_ext_task;
+
/**
* Plugin name
*/
GNUNET_SCHEDULER_TaskIdentifier server_v4_task;
+ /**
+ * The IPv4 server is scheduled to run asap
+ */
+ int server_v4_immediately;
+
/**
* MHD IPv6 daemon
*/
*/
GNUNET_SCHEDULER_TaskIdentifier server_v6_task;
+ /**
+ * The IPv6 server is scheduled to run asap
+ */
+
+ int server_v6_immediately;
+
/**
* IPv4 server socket to bind to
*/
GNUNET_NETWORK_STRUCT_BEGIN
+/**
+ * HTTP addresses including a full URI
+ */
+struct HttpAddress
+{
+ /**
+ * Length of the address following in NBO
+ */
+ uint32_t addr_len GNUNET_PACKED;
+
+ /**
+ * Address following
+ */
+ void *addr GNUNET_PACKED;
+};
+
/**
* IPv4 addresses
*/
};
GNUNET_NETWORK_STRUCT_END
+
+struct ServerConnection
+{
+ /* _RECV or _SEND */
+ int direction;
+
+ /* Should this connection get disconnected? GNUNET_YES/NO */
+ int disconnect;
+
+ /* The session this server connection belongs to */
+ struct Session *session;
+
+ /* The MHD connection */
+ struct MHD_Connection *mhd_conn;
+};
+
+
+
/**
* Session handle for connections.
*/
struct Session
{
+ /**
+ * To whom are we talking to
+ */
+ struct GNUNET_PeerIdentity target;
/**
* Stored in a linked list.
*/
uint32_t ats_address_network_type;
- /**
- * To whom are we talking to
- */
- struct GNUNET_PeerIdentity target;
-
/**
* next pointer for double linked list
*/
/**
* Client send handle
*/
- void *server_recv;
+ struct ServerConnection *server_recv;
/**
* Client send handle
*/
- void *server_send;
+ struct ServerConnection *server_send;
};
/**