comment
[oweals/gnunet.git] / src / transport / plugin_transport_http.h
index 89fb86dd92a276ce14af33b5ad9288a3d1f9b541..dc0f8bb01a0af6bc0ccd389e07e5dd6305c689c3 100644 (file)
@@ -225,6 +225,11 @@ struct Plugin
    */
   GNUNET_SCHEDULER_TaskIdentifier server_v4_task;
 
+  /**
+   * The IPv4 server is scheduled to run asap
+   */
+  int server_v4_immediately;
+
   /**
    * MHD IPv6 daemon
    */
@@ -235,6 +240,12 @@ struct Plugin
    */
   GNUNET_SCHEDULER_TaskIdentifier server_v6_task;
 
+  /**
+   * The IPv6 server is scheduled to run asap
+   */
+
+  int server_v6_immediately;
+
   /**
    * IPv4 server socket to bind to
    */
@@ -305,11 +316,33 @@ struct IPv6HttpAddress
 };
 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.
@@ -341,11 +374,6 @@ struct Session
    */
   uint32_t ats_address_network_type;
 
-  /**
-   * To whom are we talking to
-   */
-  struct GNUNET_PeerIdentity target;
-
   /**
    * next pointer for double linked list
    */
@@ -399,6 +427,11 @@ struct Session
    */
   GNUNET_SCHEDULER_TaskIdentifier recv_wakeup_task;
 
+  /**
+   * Session timeout task
+   */
+  GNUNET_SCHEDULER_TaskIdentifier timeout_task;
+
   /**
    * Is client send handle paused since there are no data to send?
    * GNUNET_YES/NO
@@ -412,12 +445,12 @@ struct Session
   /**
    * Client send handle
    */
-  void *server_recv;
+  struct ServerConnection *server_recv;
 
   /**
    * Client send handle
    */
-  void *server_send;
+  struct ServerConnection *server_send;
 };
 
 /**
@@ -463,17 +496,16 @@ struct HTTP_Message
   void *transmit_cont_cls;
 };
 
+struct Session *
+create_session (struct Plugin *plugin, const struct GNUNET_PeerIdentity *target,
+                const void *addr, size_t addrlen);
+
 int
 exist_session (struct Plugin *plugin, struct Session *s);
 
 void
 delete_session (struct Session *s);
 
-struct Session *
-create_session (struct Plugin *plugin, const struct GNUNET_PeerIdentity *target,
-                const void *addr, size_t addrlen,
-                GNUNET_TRANSPORT_TransmitContinuation cont, void *cont_cls);
-
 int
 exist_session (struct Plugin *plugin, struct Session *s);