making no progress in fcgi support...
This commit is contained in:
parent
c526c4c780
commit
b6122cc92d
@ -27,6 +27,8 @@
|
|||||||
#include "hio-prv.h"
|
#include "hio-prv.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct hio_svc_fcgic_conn_t hio_svc_fcgic_conn_t;
|
typedef struct hio_svc_fcgic_conn_t hio_svc_fcgic_conn_t;
|
||||||
|
|
||||||
struct hio_svc_fcgic_t
|
struct hio_svc_fcgic_t
|
||||||
@ -40,6 +42,8 @@ struct hio_svc_fcgic_t
|
|||||||
hio_svc_fcgic_conn_t* conns;
|
hio_svc_fcgic_conn_t* conns;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define CONN_SESS_CAPA_MAX (65536)
|
||||||
|
#define CONN_SESS_INC (32)
|
||||||
#define INVALID_SID HIO_TYPE_MAX(hio_oow_t)
|
#define INVALID_SID HIO_TYPE_MAX(hio_oow_t)
|
||||||
|
|
||||||
struct hio_svc_fcgic_sess_t
|
struct hio_svc_fcgic_sess_t
|
||||||
@ -65,23 +69,22 @@ struct hio_svc_fcgic_conn_t
|
|||||||
hio_svc_fcgic_conn_t* next;
|
hio_svc_fcgic_conn_t* next;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
struct fcgic_sck_xtn_t
|
struct fcgic_sck_xtn_t
|
||||||
{
|
{
|
||||||
hio_svc_fcgic_t* fcgic;
|
hio_svc_fcgic_conn_t* conn;
|
||||||
|
#if 0
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
hio_uint8_t* ptr;
|
hio_uint8_t* ptr;
|
||||||
hio_oow_t len;
|
hio_oow_t len;
|
||||||
hio_oow_t capa;
|
hio_oow_t capa;
|
||||||
} rbuf; /* used by tcp socket */
|
} rbuf; /* used by tcp socket */
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
typedef struct fcgic_sck_xtn_t fcgic_sck_xtn_t;
|
typedef struct fcgic_sck_xtn_t fcgic_sck_xtn_t;
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
struct fcgic_fcgi_msg_xtn_t
|
struct fcgic_fcgi_msg_xtn_t
|
||||||
@ -108,9 +111,36 @@ typedef struct fcgic_fcgi_msg_xtn_t fcgic_fcgi_msg_xtn_t;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static hio_dev_sck_t* make_sck_dev (hio_t* hio, hio_skad_t* addr)
|
static void sck_on_disconnect (hio_dev_sck_t* sck)
|
||||||
{
|
{
|
||||||
|
fcgic_sck_xtn_t* sck_xtn = hio_dev_sck_getxtn(sck);
|
||||||
|
hio_svc_fcgic_conn_t* conn;
|
||||||
|
|
||||||
|
conn = sck_xtn->conn;
|
||||||
|
conn->sck = make_connection_socket(fcgic, fcgic->saddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sck_on_connect (hio_dev_sck_t* sck)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sck_on_write (hio_dev_sck_t* sck, hio_iolen_t wrlen, void* wrctx, const hio_skad_t* dstaddr)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sck_on_read (hio_dev_sck_t* sck, const void* buf, hio_iolen_t len, const hio_skad_t* srcaddr)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static hio_dev_sck_t* make_connection_socket (hio_svc_fcgic_t* fcgic, hio_skad_t* addr)
|
||||||
|
{
|
||||||
|
hio_t* hio = fcgic->hio;
|
||||||
|
hio_dev_sck_t* sck;
|
||||||
hio_dev_sck_make_t mi;
|
hio_dev_sck_make_t mi;
|
||||||
|
hio_dev_sck_connect_t ci;
|
||||||
|
fcgic_sck_xtn_t* sck_xtn;
|
||||||
|
|
||||||
HIO_MEMSET (&mi, 0, HIO_SIZEOF(mi));
|
HIO_MEMSET (&mi, 0, HIO_SIZEOF(mi));
|
||||||
switch (hio_skad_get_family(addr))
|
switch (hio_skad_get_family(addr))
|
||||||
@ -139,14 +169,33 @@ static hio_dev_sck_t* make_sck_dev (hio_t* hio, hio_skad_t* addr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
mi.options = HIO_DEV_SCK_MAKE_LENIENT;
|
mi.options = HIO_DEV_SCK_MAKE_LENIENT;
|
||||||
#if 0
|
mi.on_write = sck_on_write;
|
||||||
mi.on_write = listener_on_write;
|
mi.on_read = sck_on_read;
|
||||||
mi.on_read = listener_on_read;
|
mi.on_connect = sck_on_connect;
|
||||||
mi.on_connect = listener_on_connect;
|
mi.on_disconnect = sck_on_disconnect;
|
||||||
mi.on_disconnect = listener_on_disconnect;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return hio_dev_sck_make(hio, 0, &mi);
|
sck = hio_dev_sck_make(hio, HIO_SIZEOF(*sck_xtn), &mi);
|
||||||
|
if (HIO_UNLIKELY(!sck)) return HIO_NULL;
|
||||||
|
|
||||||
|
sck_xtn = hio_dev_sck_getxtn(sck);
|
||||||
|
sck_xtn->conn = conn;
|
||||||
|
|
||||||
|
return sck;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void initiate_connection (hio_svc_fcgic_t* conn)
|
||||||
|
{
|
||||||
|
HIO_MEMSET (&ci, 0, HIO_SIZEOF(ci));
|
||||||
|
ci.remoteaddr = conn.addr
|
||||||
|
#if 0
|
||||||
|
// TODO:
|
||||||
|
//ci.connect_tmout = ...
|
||||||
|
#endif
|
||||||
|
if (hio_dev_sck_connect(sck, &ci) <= -1)
|
||||||
|
{
|
||||||
|
hio_dev_sck_kill (sck);
|
||||||
|
return HIO_NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static hio_svc_fcgic_conn_t* get_connection (hio_svc_fcgic_t* fcgic, hio_skad_t* addr)
|
static hio_svc_fcgic_conn_t* get_connection (hio_svc_fcgic_t* fcgic, hio_skad_t* addr)
|
||||||
@ -157,27 +206,33 @@ static hio_svc_fcgic_conn_t* get_connection (hio_svc_fcgic_t* fcgic, hio_skad_t*
|
|||||||
/* TODO: speed up? how many conns would be configured? sequential search may be ok here */
|
/* TODO: speed up? how many conns would be configured? sequential search may be ok here */
|
||||||
while (conn)
|
while (conn)
|
||||||
{
|
{
|
||||||
if (hio_equal_skads(&conn->addr, addr, 1)) return conn;
|
if (hio_equal_skads(&conn->addr, addr, 1))
|
||||||
|
{
|
||||||
|
if (conn->sess.free != INVALID_SID ||
|
||||||
|
conn->sess.capa <= (CONN_SESS_CAPA_MAX - CONN_SESS_INC)) return conn;
|
||||||
|
}
|
||||||
conn = conn->next;
|
conn = conn->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
conn = hio_callocmem(hio, HIO_SIZEOF(*conn));
|
conn = hio_callocmem(hio, HIO_SIZEOF(*conn));
|
||||||
if (HIO_UNLIKELY(!conn)) return HIO_NULL;
|
if (HIO_UNLIKELY(!conn)) return HIO_NULL;
|
||||||
|
|
||||||
conn->dev = make_sck_dev(hio, addr);
|
conn->addr = *addr;
|
||||||
|
conn->sess.capa = 0;
|
||||||
|
conn->sess.free = INVALID_SID;
|
||||||
|
|
||||||
|
conn->dev = make_connection_socket(fcgic, addr);
|
||||||
if (HIO_UNLIKELY(!conn->dev))
|
if (HIO_UNLIKELY(!conn->dev))
|
||||||
{
|
{
|
||||||
hio_freemem (hio, conn);
|
hio_freemem (hio, conn);
|
||||||
return HIO_NULL;
|
return HIO_NULL;
|
||||||
}
|
}
|
||||||
conn->addr = *addr;
|
|
||||||
|
|
||||||
conn->sess.capa = 0;
|
|
||||||
conn->sess.free = INVALID_SID;
|
|
||||||
|
|
||||||
conn->next = fcgic->conns;
|
conn->next = fcgic->conns;
|
||||||
fcgic->conns = conn;
|
fcgic->conns = conn;
|
||||||
|
|
||||||
|
initiate_conection (conn);
|
||||||
|
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,7 +266,7 @@ static hio_svc_fcgic_sess_t* new_session (hio_svc_fcgic_t* fcgic, hio_skad_t* ad
|
|||||||
hio_oow_t newcapa, i;
|
hio_oow_t newcapa, i;
|
||||||
hio_svc_fcgic_sess_t* newptr;
|
hio_svc_fcgic_sess_t* newptr;
|
||||||
|
|
||||||
newcapa = conn->sess.capa + 32;
|
newcapa = conn->sess.capa + CONN_SESS_INC;
|
||||||
newptr = hio_reallocmem (hio, conn->sess.ptr, HIO_SIZEOF(*sess) * newcapa);
|
newptr = hio_reallocmem (hio, conn->sess.ptr, HIO_SIZEOF(*sess) * newcapa);
|
||||||
if (HIO_UNLIKELY(!newptr)) return HIO_NULL;
|
if (HIO_UNLIKELY(!newptr)) return HIO_NULL;
|
||||||
|
|
||||||
@ -227,15 +282,13 @@ static hio_svc_fcgic_sess_t* new_session (hio_svc_fcgic_t* fcgic, hio_skad_t* ad
|
|||||||
conn->sess.capa = newcapa;
|
conn->sess.capa = newcapa;
|
||||||
conn->sess.ptr = newptr;
|
conn->sess.ptr = newptr;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
sess = &conn->sess.ptr[conn->sess.free];
|
sess = &conn->sess.ptr[conn->sess.free];
|
||||||
conn->sess.free = sess->sid;
|
conn->sess.free = sess->sid;
|
||||||
|
|
||||||
sess->sid = conn->sess.free;
|
sess->sid = conn->sess.free;
|
||||||
HIO_ASSERT (hio, sess->fcgic == fcgic);
|
HIO_ASSERT (hio, sess->fcgic == fcgic);
|
||||||
HIO_ASSERT (hio, sess->conn == conn);
|
HIO_ASSERT (hio, sess->conn == conn);
|
||||||
}
|
|
||||||
|
|
||||||
return sess;
|
return sess;
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,15 @@ static HIO_INLINE hio_t* hio_svc_fcgic_gethio(hio_svc_fcgic_t* svc) { return hio
|
|||||||
# define hio_svc_fcgic_gethio(svc) hio_svc_gethio(svc)
|
# define hio_svc_fcgic_gethio(svc) hio_svc_gethio(svc)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
HIO_EXPORT hio_svc_fcgic_sess_t* hio_svc_fcgic_tie (
|
||||||
|
hio_svc_fcgic_t* fcgic,
|
||||||
|
hio_skad_t* addr
|
||||||
|
);
|
||||||
|
|
||||||
|
HIO_EXPORT void hio_svc_fcgic_untie (
|
||||||
|
hio_svc_fcgic_sess_t* sess
|
||||||
|
);
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -308,8 +308,8 @@ static void cgi_on_kill (cgi_t* cgi)
|
|||||||
static void peer_on_close (hio_dev_pro_t* pro, hio_dev_pro_sid_t sid)
|
static void peer_on_close (hio_dev_pro_t* pro, hio_dev_pro_sid_t sid)
|
||||||
{
|
{
|
||||||
hio_t* hio = pro->hio;
|
hio_t* hio = pro->hio;
|
||||||
cgi_peer_xtn_t* peer = hio_dev_pro_getxtn(pro);
|
cgi_peer_xtn_t* peer_xtn = hio_dev_pro_getxtn(pro);
|
||||||
cgi_t* cgi = peer->cgi;
|
cgi_t* cgi = peer_xtn->cgi;
|
||||||
|
|
||||||
if (!cgi) return; /* cgi state already gone */
|
if (!cgi) return; /* cgi state already gone */
|
||||||
|
|
||||||
@ -319,18 +319,18 @@ static void peer_on_close (hio_dev_pro_t* pro, hio_dev_pro_sid_t sid)
|
|||||||
HIO_DEBUG3 (hio, "HTTS(%p) - peer %p(pid=%d) closing master\n", cgi->client->htts, pro, (int)pro->child_pid);
|
HIO_DEBUG3 (hio, "HTTS(%p) - peer %p(pid=%d) closing master\n", cgi->client->htts, pro, (int)pro->child_pid);
|
||||||
cgi->peer = HIO_NULL; /* clear this peer from the state */
|
cgi->peer = HIO_NULL; /* clear this peer from the state */
|
||||||
|
|
||||||
HIO_ASSERT (hio, peer->cgi != HIO_NULL);
|
HIO_ASSERT (hio, peer_xtn->cgi != HIO_NULL);
|
||||||
/*printf ("DETACHING FROM CGI PEER DEVICE.....................%p %d\n", peer->cgi, (int)peer->cgi->rsrc_refcnt);*/
|
/*printf ("DETACHING FROM CGI PEER DEVICE.....................%p %d\n", peer->cgi, (int)peer->cgi->rsrc_refcnt);*/
|
||||||
HIO_SVC_HTTS_RSRC_DETACH (peer->cgi);
|
HIO_SVC_HTTS_RSRC_DETACH (peer_xtn->cgi);
|
||||||
|
|
||||||
if (cgi->peer_htrd)
|
if (cgi->peer_htrd)
|
||||||
{
|
{
|
||||||
/* once this peer device is closed, peer's htrd is also never used.
|
/* once this peer device is closed, peer's htrd is also never used.
|
||||||
* it's safe to detach the extra information attached on the htrd object. */
|
* it's safe to detach the extra information attached on the htrd object. */
|
||||||
peer = hio_htrd_getxtn(cgi->peer_htrd);
|
peer_xtn = hio_htrd_getxtn(cgi->peer_htrd);
|
||||||
HIO_ASSERT (hio, peer->cgi != HIO_NULL);
|
HIO_ASSERT (hio, peer_xtn->cgi != HIO_NULL);
|
||||||
/*printf ("DETACHING FROM CGI PEER HTRD.....................%p %d\n", peer->cgi, (int)peer->cgi->rsrc_refcnt);*/
|
/*printf ("DETACHING FROM CGI PEER HTRD.....................%p %d\n", peer->cgi, (int)peer->cgi->rsrc_refcnt);*/
|
||||||
HIO_SVC_HTTS_RSRC_DETACH (peer->cgi);
|
HIO_SVC_HTTS_RSRC_DETACH (peer_xtn->cgi);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -926,7 +926,7 @@ int hio_svc_htts_docgi (hio_svc_htts_t* htts, hio_dev_sck_t* csck, hio_htre_t* r
|
|||||||
hio_t* hio = htts->hio;
|
hio_t* hio = htts->hio;
|
||||||
hio_svc_htts_cli_t* cli = hio_dev_sck_getxtn(csck);
|
hio_svc_htts_cli_t* cli = hio_dev_sck_getxtn(csck);
|
||||||
cgi_t* cgi = HIO_NULL;
|
cgi_t* cgi = HIO_NULL;
|
||||||
cgi_peer_xtn_t* peer;
|
cgi_peer_xtn_t* peer_xtn;
|
||||||
hio_dev_pro_make_t mi;
|
hio_dev_pro_make_t mi;
|
||||||
peer_fork_ctx_t fc;
|
peer_fork_ctx_t fc;
|
||||||
|
|
||||||
@ -977,18 +977,18 @@ int hio_svc_htts_docgi (hio_svc_htts_t* htts, hio_dev_sck_t* csck, hio_htre_t* r
|
|||||||
goto oops; /* TODO: must not go to oops. just destroy the cgi and finalize the request .. */
|
goto oops; /* TODO: must not go to oops. just destroy the cgi and finalize the request .. */
|
||||||
}
|
}
|
||||||
|
|
||||||
cgi->peer = hio_dev_pro_make(hio, HIO_SIZEOF(*peer), &mi);
|
cgi->peer = hio_dev_pro_make(hio, HIO_SIZEOF(*peer_xtn), &mi);
|
||||||
if (HIO_UNLIKELY(!cgi->peer)) goto oops;
|
if (HIO_UNLIKELY(!cgi->peer)) goto oops;
|
||||||
peer = hio_dev_pro_getxtn(cgi->peer);
|
peer_xtn = hio_dev_pro_getxtn(cgi->peer);
|
||||||
HIO_SVC_HTTS_RSRC_ATTACH (cgi, peer->cgi); /* peer->cgi in pro = cgi */
|
HIO_SVC_HTTS_RSRC_ATTACH (cgi, peer_xtn->cgi); /* peer->cgi in pro = cgi */
|
||||||
|
|
||||||
cgi->peer_htrd = hio_htrd_open(hio, HIO_SIZEOF(*peer));
|
cgi->peer_htrd = hio_htrd_open(hio, HIO_SIZEOF(*peer_xtn));
|
||||||
if (HIO_UNLIKELY(!cgi->peer_htrd)) goto oops;
|
if (HIO_UNLIKELY(!cgi->peer_htrd)) goto oops;
|
||||||
hio_htrd_setoption (cgi->peer_htrd, HIO_HTRD_SKIP_INITIAL_LINE | HIO_HTRD_RESPONSE);
|
hio_htrd_setoption (cgi->peer_htrd, HIO_HTRD_SKIP_INITIAL_LINE | HIO_HTRD_RESPONSE);
|
||||||
hio_htrd_setrecbs (cgi->peer_htrd, &peer_htrd_recbs);
|
hio_htrd_setrecbs (cgi->peer_htrd, &peer_htrd_recbs);
|
||||||
|
|
||||||
peer = hio_htrd_getxtn(cgi->peer_htrd);
|
peer_xtn = hio_htrd_getxtn(cgi->peer_htrd);
|
||||||
HIO_SVC_HTTS_RSRC_ATTACH (cgi, peer->cgi); /* peer->cgi in htrd = cgi */
|
HIO_SVC_HTTS_RSRC_ATTACH (cgi, peer_xtn->cgi); /* peer->cgi in htrd = cgi */
|
||||||
|
|
||||||
#if !defined(CGI_ALLOW_UNLIMITED_REQ_CONTENT_LENGTH)
|
#if !defined(CGI_ALLOW_UNLIMITED_REQ_CONTENT_LENGTH)
|
||||||
if (cgi->req_content_length_unlimited)
|
if (cgi->req_content_length_unlimited)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "http-prv.h"
|
#include "http-prv.h"
|
||||||
#include <hio-fmt.h>
|
#include <hio-fmt.h>
|
||||||
#include <hio-chr.h>
|
#include <hio-chr.h>
|
||||||
|
#include <hio-fcgi.h>
|
||||||
|
|
||||||
#define FCGI_ALLOW_UNLIMITED_REQ_CONTENT_LENGTH
|
#define FCGI_ALLOW_UNLIMITED_REQ_CONTENT_LENGTH
|
||||||
|
|
||||||
@ -22,7 +23,6 @@ typedef enum fcgi_res_mode_t fcgi_res_mode_t;
|
|||||||
#define FCGI_OVER_ALL (FCGI_OVER_READ_FROM_CLIENT | FCGI_OVER_READ_FROM_PEER | FCGI_OVER_WRITE_TO_CLIENT | FCGI_OVER_WRITE_TO_PEER)
|
#define FCGI_OVER_ALL (FCGI_OVER_READ_FROM_CLIENT | FCGI_OVER_READ_FROM_PEER | FCGI_OVER_WRITE_TO_CLIENT | FCGI_OVER_WRITE_TO_PEER)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define FCGI_VERSION (1)
|
#define FCGI_VERSION (1)
|
||||||
|
|
||||||
#define FCGI_PADDING_SIZE 255
|
#define FCGI_PADDING_SIZE 255
|
||||||
@ -99,7 +99,7 @@ struct fcgi_t
|
|||||||
|
|
||||||
hio_oow_t num_pending_writes_to_client;
|
hio_oow_t num_pending_writes_to_client;
|
||||||
hio_oow_t num_pending_writes_to_peer;
|
hio_oow_t num_pending_writes_to_peer;
|
||||||
//hio_dev_pro_t* peer;
|
hio_svc_fcgic_sess_t* peer;
|
||||||
hio_svc_htts_cli_t* client;
|
hio_svc_htts_cli_t* client;
|
||||||
hio_http_version_t req_version; /* client request */
|
hio_http_version_t req_version; /* client request */
|
||||||
|
|
||||||
@ -502,7 +502,7 @@ int hio_svc_htts_dofcgi (hio_svc_htts_t* htts, hio_dev_sck_t* csck, hio_htre_t*
|
|||||||
hio_t* hio = htts->hio;
|
hio_t* hio = htts->hio;
|
||||||
hio_svc_htts_cli_t* cli = hio_dev_sck_getxtn(csck);
|
hio_svc_htts_cli_t* cli = hio_dev_sck_getxtn(csck);
|
||||||
fcgi_t* fcgi = HIO_NULL;
|
fcgi_t* fcgi = HIO_NULL;
|
||||||
//fcgi_peer_xtn_t* peer;
|
//fcgi_peer_xtn_t* peer_xtn;
|
||||||
|
|
||||||
/* ensure that you call this function before any contents is received */
|
/* ensure that you call this function before any contents is received */
|
||||||
HIO_ASSERT (hio, hio_htre_getcontentlen(req) == 0);
|
HIO_ASSERT (hio, hio_htre_getcontentlen(req) == 0);
|
||||||
@ -529,29 +529,13 @@ int hio_svc_htts_dofcgi (hio_svc_htts_t* htts, hio_dev_sck_t* csck, hio_htre_t*
|
|||||||
HIO_SVC_HTTS_RSRC_ATTACH (fcgi, cli->rsrc); /* cli->rsrc = fcgi */
|
HIO_SVC_HTTS_RSRC_ATTACH (fcgi, cli->rsrc); /* cli->rsrc = fcgi */
|
||||||
|
|
||||||
#if 0 // TODO
|
#if 0 // TODO
|
||||||
fcgi->peer = hio_dev_pro_make(hio, HIO_SIZEOF(*peer), &mi);
|
fcgi->peer = hio_dev_pro_make(hio, HIO_SIZEOF(*peer_xtn), &mi);
|
||||||
if (HIO_UNLIKELY(!fcgi->peer)) goto oops;
|
if (HIO_UNLIKELY(!fcgi->peer)) goto oops;
|
||||||
peer = hio_dev_pro_getxtn(fcgi->peer);
|
peer_xtn = hio_dev_pro_getxtn(fcgi->peer);
|
||||||
HIO_SVC_HTTS_RSRC_ATTACH (fcgi, peer->fcgi); /* peer->fcgi = fcgi */
|
HIO_SVC_HTTS_RSRC_ATTACH (fcgi, peer_xtn->fcgi); /* peer->fcgi = fcgi */
|
||||||
#else
|
#else
|
||||||
/*
|
fcgi->peer = hio_svc_fcgic_tie(hio, "10.10.10.9:9000" /* TODO: add a read callback */);
|
||||||
hio_fcgic_sess_t* fcgi_sess;
|
|
||||||
|
|
||||||
fcgi_sess = hio_svc_fcgic_tie(hio, "10.10.10.9:9000");
|
|
||||||
if (HIO_UNLIKELY(!fcgi_sess)) goto oops;
|
|
||||||
|
|
||||||
hio_svc_fcgic_untie (fcgic_sess); <--- this must release the session.
|
|
||||||
|
|
||||||
|
|
||||||
fcgi_sess = hio_svc_fcgic_tie(hio, "10.10.10.9:9000", callback?);
|
|
||||||
hio_svc_fcgic_write (hio, fcgi_sess, DATA, "aaaaaaaaaaaaaaaaaaaaa");
|
|
||||||
hio_svc_fcgic_write (hio, fcgi_sess, STDIO, "aaaaaaaaaaaaaaaaaaaaa");
|
|
||||||
|
|
||||||
fcgi->peer = hio_svc_fcgi_make(hio, XXXX);
|
|
||||||
if (HIO_UNLIKELY(!fcgi->peer)) goto oops;
|
if (HIO_UNLIKELY(!fcgi->peer)) goto oops;
|
||||||
peer = hio_dev_pro_getxtn(fcgi->peer);
|
|
||||||
HIO_SVC_HTTS_RSRC_ATTACH (fcgi, peer->fcgi);
|
|
||||||
*/
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0 // TODO
|
#if 0 // TODO
|
||||||
|
Loading…
Reference in New Issue
Block a user