From 94f015ea9801fdeb8f3163c7b95fd9ae2d9977ff Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Tue, 16 Sep 2014 14:14:51 +0000 Subject: [PATCH] deprecated qse_ubi_t and introduced qse_httpd_hnd_t --- qse/include/qse/cmn/fio.h | 3 - qse/include/qse/cmn/nwio.h | 5 - qse/include/qse/cmn/pio.h | 10 -- qse/include/qse/cmn/sio.h | 4 - qse/include/qse/http/httpd.h | 50 +++++----- qse/include/qse/http/upxd.h | 10 +- qse/include/qse/types.h | 64 ------------- qse/lib/cmn/fio.c | 19 ---- qse/lib/cmn/nwio.c | 16 ---- qse/lib/cmn/pio.c | 17 ---- qse/lib/cmn/sio.c | 5 - qse/lib/http/httpd-cgi.c | 4 +- qse/lib/http/httpd-dir.c | 6 +- qse/lib/http/httpd-file.c | 15 ++- qse/lib/http/httpd-std-dns.h | 34 +++---- qse/lib/http/httpd-std-urs.h | 38 ++++---- qse/lib/http/httpd-std.c | 178 +++++++++++++++++++---------------- qse/lib/http/httpd.c | 43 ++++----- qse/lib/http/upxd.c | 4 +- 19 files changed, 195 insertions(+), 330 deletions(-) diff --git a/qse/include/qse/cmn/fio.h b/qse/include/qse/cmn/fio.h index cf250406..8ddfa8ee 100644 --- a/qse/include/qse/cmn/fio.h +++ b/qse/include/qse/cmn/fio.h @@ -234,9 +234,6 @@ QSE_EXPORT qse_fio_hnd_t qse_fio_gethandle ( const qse_fio_t* fio ); -QSE_EXPORT qse_ubi_t qse_fio_gethandleasubi ( - const qse_fio_t* fio -); /** * The qse_fio_seek() function changes the current file position. diff --git a/qse/include/qse/cmn/nwio.h b/qse/include/qse/cmn/nwio.h index d3b8f223..ca1e019b 100644 --- a/qse/include/qse/cmn/nwio.h +++ b/qse/include/qse/cmn/nwio.h @@ -167,11 +167,6 @@ QSE_EXPORT qse_nwio_hnd_t qse_nwio_gethandle ( const qse_nwio_t* nwio ); -QSE_EXPORT qse_ubi_t qse_nwio_gethandleasubi ( - const qse_nwio_t* nwio -); - - QSE_EXPORT qse_cmgr_t* qse_nwio_getcmgr ( qse_nwio_t* nwio ); diff --git a/qse/include/qse/cmn/pio.h b/qse/include/qse/cmn/pio.h index 4a0d57d2..4f845c3d 100644 --- a/qse/include/qse/cmn/pio.h +++ b/qse/include/qse/cmn/pio.h @@ -299,16 +299,6 @@ QSE_EXPORT qse_pio_hnd_t qse_pio_gethandle ( qse_pio_hid_t hid /**< handle ID */ ); -/** - * The qse_pio_gethandleasubi() function gets a pipe handle wrapped - * in the #qse_ubi_t type. - * @return pipe handle - */ -QSE_EXPORT qse_ubi_t qse_pio_gethandleasubi ( - const qse_pio_t* pio, /**< pio object */ - qse_pio_hid_t hid /**< handle ID */ -); - /** * The qse_pio_getchild() function gets a process handle. * @return process handle diff --git a/qse/include/qse/cmn/sio.h b/qse/include/qse/cmn/sio.h index 92fffacb..03436fe0 100644 --- a/qse/include/qse/cmn/sio.h +++ b/qse/include/qse/cmn/sio.h @@ -201,10 +201,6 @@ QSE_EXPORT qse_sio_hnd_t qse_sio_gethandle ( const qse_sio_t* sio ); -QSE_EXPORT qse_ubi_t qse_sio_gethandleasubi ( - const qse_sio_t* sio -); - /** * The qse_sio_getpath() returns the file path used to open the stream. * It returns #QSE_NULL if #QSE_SIO_HANDLE was on or #QSE_SIO_KEEPPATH diff --git a/qse/include/qse/http/httpd.h b/qse/include/qse/http/httpd.h index b3d75fb1..431a9e12 100644 --- a/qse/include/qse/http/httpd.h +++ b/qse/include/qse/http/httpd.h @@ -36,6 +36,8 @@ typedef struct qse_httpd_client_t qse_httpd_client_t; typedef struct qse_httpd_dns_t qse_httpd_dns_t; typedef struct qse_httpd_urs_t qse_httpd_urs_t; +typedef qse_intptr_t qse_httpd_hnd_t; + enum qse_httpd_errnum_t { QSE_HTTPD_ENOERR, @@ -87,8 +89,6 @@ enum qse_httpd_trait_t }; typedef enum qse_httpd_trait_t qse_httpd_trait_t; - - typedef struct qse_httpd_mod_t qse_httpd_mod_t; typedef int (*qse_httpd_mod_load_t) ( @@ -149,7 +149,7 @@ struct qse_httpd_peer_t { qse_nwad_t nwad; qse_nwad_t local; /* local side address facing the peer */ - qse_ubi_t handle; + qse_httpd_hnd_t handle; }; enum qse_httpd_mux_mask_t @@ -161,7 +161,7 @@ enum qse_httpd_mux_mask_t typedef int (*qse_httpd_muxcb_t) ( qse_httpd_t* httpd, void* mux, - qse_ubi_t handle, + qse_httpd_hnd_t handle, int mask, /* ORed of qse_httpd_mux_mask_t */ void* cbarg ); @@ -244,7 +244,7 @@ typedef void (*qse_httpd_urs_close_t) ( typedef int (*qse_httpd_urs_recv_t) ( qse_httpd_t* httpd, qse_httpd_urs_t* urs, - qse_ubi_t handle + qse_httpd_hnd_t handle ); typedef int (*qse_httpd_urs_send_t) ( @@ -318,12 +318,12 @@ struct qse_httpd_scb_t { void* (*open) (qse_httpd_t* httpd, qse_httpd_muxcb_t muxcb); void (*close) (qse_httpd_t* httpd, void* mux); - int (*addhnd) (qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mask, void* cbarg); - int (*delhnd) (qse_httpd_t* httpd, void* mux, qse_ubi_t handle); + int (*addhnd) (qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle, int mask, void* cbarg); + int (*delhnd) (qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle); int (*poll) (qse_httpd_t* httpd, void* mux, const qse_ntime_t* tmout); - int (*readable) (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t* tmout); - int (*writable) (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t* tmout); + int (*readable) (qse_httpd_t* httpd, qse_httpd_hnd_t handle, const qse_ntime_t* tmout); + int (*writable) (qse_httpd_t* httpd, qse_httpd_hnd_t handle, const qse_ntime_t* tmout); } mux; struct @@ -333,17 +333,17 @@ struct qse_httpd_scb_t int (*ropen) ( qse_httpd_t* httpd, const qse_mchar_t* path, - qse_ubi_t* handle); + qse_httpd_hnd_t* handle); int (*wopen) ( qse_httpd_t* httpd, const qse_mchar_t* path, - qse_ubi_t* handle); - void (*close) (qse_httpd_t* httpd, qse_ubi_t handle); + qse_httpd_hnd_t* handle); + void (*close) (qse_httpd_t* httpd, qse_httpd_hnd_t handle); qse_ssize_t (*read) ( - qse_httpd_t* httpd, qse_ubi_t handle, + qse_httpd_t* httpd, qse_httpd_hnd_t handle, qse_mchar_t* buf, qse_size_t len); qse_ssize_t (*write) ( - qse_httpd_t* httpd, qse_ubi_t handle, + qse_httpd_t* httpd, qse_httpd_hnd_t handle, const qse_mchar_t* buf, qse_size_t len); } file; @@ -357,10 +357,10 @@ struct qse_httpd_scb_t int (*open) ( qse_httpd_t* httpd, const qse_mchar_t* path, - qse_ubi_t* handle); - void (*close) (qse_httpd_t* httpd, qse_ubi_t handle); + qse_httpd_hnd_t* handle); + void (*close) (qse_httpd_t* httpd, qse_httpd_hnd_t handle); int (*read) ( - qse_httpd_t* httpd, qse_ubi_t handle, + qse_httpd_t* httpd, qse_httpd_hnd_t handle, qse_httpd_dirent_t* ent); } dir; @@ -388,7 +388,7 @@ struct qse_httpd_scb_t qse_ssize_t (*sendfile) ( qse_httpd_t* httpd, qse_httpd_client_t* client, - qse_ubi_t handle, qse_foff_t* offset, qse_size_t count); + qse_httpd_hnd_t handle, qse_foff_t* offset, qse_size_t count); /* event notification */ int (*accepted) ( @@ -403,7 +403,7 @@ struct qse_httpd_scb_t { int (*open) (qse_httpd_t* httpd, qse_httpd_dns_t* dns); void (*close) (qse_httpd_t* httpd, qse_httpd_dns_t* dns); - int (*recv) (qse_httpd_t* httpd, qse_httpd_dns_t* dns, qse_ubi_t handle); + int (*recv) (qse_httpd_t* httpd, qse_httpd_dns_t* dns, qse_httpd_hnd_t handle); int (*send) (qse_httpd_t* httpd, qse_httpd_dns_t* dns, const qse_mchar_t* name, qse_httpd_resolve_t resol, const qse_httpd_dns_server_t* dns_server, void* ctx); @@ -531,7 +531,7 @@ struct qse_httpd_task_trigger_t struct { int mask; /* QSE_HTTPD_TASK_TRIGGER_READ | QSE_HTTPD_TASK_TRIGGER_WRITE */ - qse_ubi_t handle; + qse_httpd_hnd_t handle; } v[QSE_HTTPD_TASK_TRIGGER_MAX]; }; @@ -573,8 +573,8 @@ struct qse_httpd_client_t QSE_HTTPD_MATE_HDR; /* == PUBLIC == */ - qse_ubi_t handle; - qse_ubi_t handle2; + qse_httpd_hnd_t handle; + qse_httpd_hnd_t handle2; qse_nwad_t remote_addr; qse_nwad_t local_addr; qse_nwad_t orgdst_addr; @@ -649,7 +649,7 @@ struct qse_httpd_server_t qse_httpd_server_dope_t dope; /* set by server.open callback */ - qse_ubi_t handle; + qse_httpd_hnd_t handle; /* private */ qse_httpd_t* httpd; @@ -664,7 +664,7 @@ struct qse_httpd_dns_t QSE_HTTPD_MATE_HDR; /* == PUBLIC == */ - qse_ubi_t handle[5]; + qse_httpd_hnd_t handle[5]; /* the number of effective slots in the handle array */ int handle_count; @@ -681,7 +681,7 @@ struct qse_httpd_urs_t QSE_HTTPD_MATE_HDR; /* == PUBLIC == */ - qse_ubi_t handle[5]; + qse_httpd_hnd_t handle[5]; int handle_count; unsigned long handle_mask; void* ctx; diff --git a/qse/include/qse/http/upxd.h b/qse/include/qse/http/upxd.h index 23c3fbd6..1b7cc18b 100644 --- a/qse/include/qse/http/upxd.h +++ b/qse/include/qse/http/upxd.h @@ -28,6 +28,8 @@ typedef struct qse_upxd_t qse_upxd_t; +typedef qse_intptr_t qse_upxd_hnd_t; + enum qse_upxd_errnum_t { QSE_UPXD_ENOERR, @@ -52,7 +54,7 @@ typedef struct qse_upxd_session_t qse_upxd_session_t; typedef struct qse_upxd_sock_t qse_upxd_sock_t; struct qse_upxd_sock_t { - qse_ubi_t handle; + qse_upxd_hnd_t handle; qse_nwad_t bind; const qse_char_t* dev; qse_nwad_t from; @@ -89,7 +91,7 @@ struct qse_upxd_session_t typedef int (*qse_upxd_muxcb_t) ( qse_upxd_t* upxd, void* mux, - qse_ubi_t handle, + qse_upxd_hnd_t handle, void* cbarg ); @@ -121,9 +123,9 @@ struct qse_upxd_cbs_t void* (*open) (qse_upxd_t* upxd); void (*close) (qse_upxd_t* upxd, void* mux); int (*addhnd) ( - qse_upxd_t* upxd, void* mux, qse_ubi_t handle, + qse_upxd_t* upxd, void* mux, qse_upxd_hnd_t handle, qse_upxd_muxcb_t cbfun, void* cbarg); - int (*delhnd) (qse_upxd_t* upxd, void* mux, qse_ubi_t handle); + int (*delhnd) (qse_upxd_t* upxd, void* mux, qse_upxd_hnd_t handle); int (*poll) (qse_upxd_t* upxd, void* mux, qse_ntime_t timeout); } mux; }; diff --git a/qse/include/qse/types.h b/qse/include/qse/types.h index dd3e24cf..482ea666 100644 --- a/qse/include/qse/types.h +++ b/qse/include/qse/types.h @@ -748,70 +748,6 @@ typedef struct qse_tmgr_t qse_tmgr_t; # error Unsupported platform #endif -/** - * The qse_ubi_t type defines a union type that includes most of built-in - * data types and numeric types defined in the library. - */ -union qse_ubi_t -{ - char c; - unsigned char uc; - short s; - unsigned short us; - int i; - unsigned int ui; - long l; - unsigned long ul; -#if defined(QSE_SIZEOF_LONG_LONG) && (QSE_SIZEOF_LONG_LONG > 0) - long long ll; - unsigned long long ull; -#endif - float f; - double d; -#if defined(QSE_SIZEOF_LONG_DOUBLE) && (QSE_SIZEOF_LONG_DOUBLE > 0) - long double ld; -#endif - void* ptr; - - qse_byte_t byte; - qse_int_t sint; - qse_uint_t uint; - qse_long_t slong; - qse_ulong_t ulong; - qse_size_t size; - qse_ssize_t ssize; - qse_word_t word; - qse_intptr_t intptr; - qse_uintptr_t uintptr; - qse_intmax_t intmax; - qse_uintmax_t uintmax; - qse_flt_t flt; - - qse_char_t ch; - qse_mchar_t mch; - qse_wchar_t wch; - qse_cint_t cint; - qse_mcint_t mcint; - qse_wcint_t wcint; - - qse_int8_t int8; - qse_uint8_t uint8; - qse_int16_t int16; - qse_uint16_t uint16; - qse_int32_t int32; - qse_uint32_t uint32; -#if defined(QSE_HAVE_INT64_T) - qse_int64_t int64; - qse_uint64_t uint64; -#endif -#if defined(QSE_HAVE_INT128_T) - qse_int128_t int128; - qse_uint128_t uint128; -#endif - qse_foff_t foff; -}; -typedef union qse_ubi_t qse_ubi_t; - /* * Note QSE_MBLEN_MAX was set to 2 when autoconf ran for _WIN32 * with mingw32. This is bad since it can't handle UTF-8. Here are diff --git a/qse/lib/cmn/fio.c b/qse/lib/cmn/fio.c index 70f46133..e5e05ed4 100644 --- a/qse/lib/cmn/fio.c +++ b/qse/lib/cmn/fio.c @@ -938,25 +938,6 @@ qse_fio_hnd_t qse_fio_gethandle (const qse_fio_t* fio) return fio->handle; } -qse_ubi_t qse_fio_gethandleasubi (const qse_fio_t* fio) -{ - qse_ubi_t handle; - -#if defined(_WIN32) - handle.ptr = fio->handle; -#elif defined(__OS2__) - handle.ul = fio->handle; -#elif defined(__DOS__) - handle.i = fio->handle; -#elif defined(vms) || defined(__vms) - handle.ptr = fio->handle; -#else - handle.i = fio->handle; -#endif - - return handle; -} - qse_fio_off_t qse_fio_seek ( qse_fio_t* fio, qse_fio_off_t offset, qse_fio_ori_t origin) { diff --git a/qse/lib/cmn/nwio.c b/qse/lib/cmn/nwio.c index 37e09305..1bcde653 100644 --- a/qse/lib/cmn/nwio.c +++ b/qse/lib/cmn/nwio.c @@ -849,22 +849,6 @@ qse_nwio_hnd_t qse_nwio_gethandle (const qse_nwio_t* nwio) return nwio->handle; } -qse_ubi_t qse_nwio_gethandleasubi (const qse_nwio_t* nwio) -{ - qse_ubi_t ubi; - -#if defined(_WIN32) - ubi.intptr = nwio->handle; -#elif defined(__OS2__) - ubi.i = nwio->handle; -#elif defined(__DOS__) - ubi.i = nwio->handle; -#else - ubi.i = nwio->handle; -#endif - return ubi; -} - qse_ssize_t qse_nwio_flush (qse_nwio_t* nwio) { qse_ssize_t n; diff --git a/qse/lib/cmn/pio.c b/qse/lib/cmn/pio.c index 26aee122..0b2c7a83 100644 --- a/qse/lib/cmn/pio.c +++ b/qse/lib/cmn/pio.c @@ -1966,23 +1966,6 @@ qse_pio_hnd_t qse_pio_gethandle (const qse_pio_t* pio, qse_pio_hid_t hid) return pio->pin[hid].handle; } -qse_ubi_t qse_pio_gethandleasubi (const qse_pio_t* pio, qse_pio_hid_t hid) -{ - qse_ubi_t handle; - -#if defined(_WIN32) - handle.ptr = pio->pin[hid].handle; -#elif defined(__OS2__) - handle.ul = pio->pin[hid].handle; -#elif defined(__DOS__) - handle.i = pio->pin[hid].handle; -#else - handle.i = pio->pin[hid].handle; -#endif - - return handle; -} - qse_pio_pid_t qse_pio_getchild (const qse_pio_t* pio) { return pio->child; diff --git a/qse/lib/cmn/sio.c b/qse/lib/cmn/sio.c index 7aa76010..41527b07 100644 --- a/qse/lib/cmn/sio.c +++ b/qse/lib/cmn/sio.c @@ -290,11 +290,6 @@ qse_sio_hnd_t qse_sio_gethandle (const qse_sio_t* sio) return QSE_FIO_HANDLE(&sio->file); } -qse_ubi_t qse_sio_gethandleasubi (const qse_sio_t* sio) -{ - return qse_fio_gethandleasubi (&sio->file); -} - const qse_char_t* qse_sio_getpath (qse_sio_t* sio) { /* this path is valid if QSE_SIO_HANDLE is off and QSE_SIO_KEEPPATH is on */ diff --git a/qse/lib/http/httpd-cgi.c b/qse/lib/http/httpd-cgi.c index 7db6f23d..e2651100 100644 --- a/qse/lib/http/httpd-cgi.c +++ b/qse/lib/http/httpd-cgi.c @@ -1498,8 +1498,8 @@ static int task_main_cgi ( * writes it back to the client. so add a trigger for * checking the data availability from the child process */ task->trigger.v[0].mask = QSE_HTTPD_TASK_TRIGGER_READ; - task->trigger.v[0].handle = qse_pio_gethandleasubi (&cgi->pio, QSE_PIO_OUT); - task->trigger.v[1].handle = qse_pio_gethandleasubi (&cgi->pio, QSE_PIO_IN); + task->trigger.v[0].handle = qse_pio_gethandle (&cgi->pio, QSE_PIO_OUT); + task->trigger.v[1].handle = qse_pio_gethandle (&cgi->pio, QSE_PIO_IN); task->trigger.cmask = 0; if (cgi->reqfwdbuf) diff --git a/qse/lib/http/httpd-dir.c b/qse/lib/http/httpd-dir.c index ee4c3265..7b939cf5 100644 --- a/qse/lib/http/httpd-dir.c +++ b/qse/lib/http/httpd-dir.c @@ -33,7 +33,7 @@ struct task_dir_t qse_http_version_t version; int keepalive; int method; - qse_ubi_t handle; + qse_httpd_hnd_t handle; }; typedef struct task_dseg_t task_dseg_t; @@ -47,7 +47,7 @@ struct task_dseg_t qse_mcstr_t qpath; qse_mcstr_t head; qse_mcstr_t foot; - qse_ubi_t handle; + qse_httpd_hnd_t handle; qse_httpd_dirent_t dent; #define HEADER_ADDED (1 << 0) @@ -439,7 +439,7 @@ send_dirlist: static qse_httpd_task_t* entask_directory_segment ( qse_httpd_t* httpd, qse_httpd_client_t* client, - qse_httpd_task_t* pred, qse_ubi_t handle, task_dir_t* dir) + qse_httpd_task_t* pred, qse_httpd_hnd_t handle, task_dir_t* dir) { qse_httpd_task_t task; task_dseg_t data; diff --git a/qse/lib/http/httpd-file.c b/qse/lib/http/httpd-file.c index 33c644fd..65a9e7cf 100644 --- a/qse/lib/http/httpd-file.c +++ b/qse/lib/http/httpd-file.c @@ -52,7 +52,7 @@ struct task_file_t int flags; int status; qse_htre_t* req; - qse_ubi_t handle; + qse_httpd_hnd_t handle; } put; } u; }; @@ -62,7 +62,7 @@ struct task_file_t typedef struct task_getfseg_t task_getfseg_t; struct task_getfseg_t { - qse_ubi_t handle; + qse_httpd_hnd_t handle; qse_foff_t left; qse_foff_t offset; }; @@ -128,11 +128,11 @@ more_work: static qse_httpd_task_t* entask_getfseg ( qse_httpd_t* httpd, qse_httpd_client_t* client, qse_httpd_task_t* pred, - qse_ubi_t handle, qse_foff_t offset, qse_foff_t size) + qse_httpd_hnd_t handle, qse_foff_t offset, qse_foff_t size) { qse_httpd_task_t task; task_getfseg_t data; - + QSE_MEMSET (&data, 0, QSE_SIZEOF(data)); data.handle = handle; data.offset = offset; @@ -175,7 +175,7 @@ static QSE_INLINE int task_main_getfile ( { task_file_t* file; qse_httpd_task_t* x; - qse_ubi_t handle; + qse_httpd_hnd_t handle; int fileopen = 0; qse_httpd_stat_t st; @@ -267,8 +267,7 @@ static QSE_INLINE int task_main_getfile ( { if (file->method == QSE_HTTP_HEAD) goto no_file_send; x = entask_getfseg ( - httpd, client, x, - handle, + httpd, client, x, handle, file->u.get.range.from, (file->u.get.range.to - file->u.get.range.from + 1) ); @@ -338,7 +337,7 @@ no_file_send: /*------------------------------------------------------------------------*/ -static int write_file (qse_httpd_t* httpd, qse_ubi_t handle, const qse_mchar_t* ptr, qse_size_t len) +static int write_file (qse_httpd_t* httpd, qse_httpd_hnd_t handle, const qse_mchar_t* ptr, qse_size_t len) { qse_ssize_t n; qse_size_t pos = 0; diff --git a/qse/lib/http/httpd-std-dns.h b/qse/lib/http/httpd-std-dns.h index 80f009e5..8185e24d 100644 --- a/qse/lib/http/httpd-std-dns.h +++ b/qse/lib/http/httpd-std-dns.h @@ -293,8 +293,8 @@ static int dns_open (qse_httpd_t* httpd, qse_httpd_dns_t* dns) httpd_xtn = qse_httpd_getxtn (httpd); - dns->handle[0].i = QSE_INVALID_SCKHND; - dns->handle[1].i = QSE_INVALID_SCKHND; + dns->handle[0] = QSE_INVALID_SCKHND; + dns->handle[1] = QSE_INVALID_SCKHND; dc = (dns_ctx_t*) qse_httpd_callocmem (httpd, QSE_SIZEOF(dns_ctx_t)); if (dc == NULL) goto oops; @@ -360,11 +360,11 @@ static int dns_open (qse_httpd_t* httpd, qse_httpd_dns_t* dns) httpd->opt.rcb.logact (httpd, &msg); } - dns->handle[0].i = open_udp_socket (httpd, AF_INET, SOCK_DGRAM, IPPROTO_UDP); + dns->handle[0] = open_udp_socket (httpd, AF_INET, SOCK_DGRAM, IPPROTO_UDP); #if defined(AF_INET6) - dns->handle[1].i = open_udp_socket (httpd, AF_INET6, SOCK_DGRAM, IPPROTO_UDP); + dns->handle[1] = open_udp_socket (httpd, AF_INET6, SOCK_DGRAM, IPPROTO_UDP); #endif - if (!qse_isvalidsckhnd(dns->handle[0].i) && !qse_isvalidsckhnd(dns->handle[1].i)) + if (!qse_isvalidsckhnd(dns->handle[0]) && !qse_isvalidsckhnd(dns->handle[1])) { goto oops; } @@ -376,9 +376,9 @@ static int dns_open (qse_httpd_t* httpd, qse_httpd_dns_t* dns) if (dc->skadlen >= 0) { if (nwad.type == QSE_NWAD_IN4) - dc->dns_socket = dns->handle[0].i; + dc->dns_socket = dns->handle[0]; else - dc->dns_socket = dns->handle[1].i; + dc->dns_socket = dns->handle[1]; } else { @@ -386,16 +386,16 @@ static int dns_open (qse_httpd_t* httpd, qse_httpd_dns_t* dns) } dns->handle_count = 2; - if (qse_isvalidsckhnd(dns->handle[0].i)) dns->handle_mask |= (1 << 0); - if (qse_isvalidsckhnd(dns->handle[1].i)) dns->handle_mask |= (1 << 1); + if (qse_isvalidsckhnd(dns->handle[0])) dns->handle_mask |= (1 << 0); + if (qse_isvalidsckhnd(dns->handle[1])) dns->handle_mask |= (1 << 1); dns->ctx = dc; return 0; oops: - if (qse_isvalidsckhnd(dns->handle[0].i)) qse_closesckhnd (dns->handle[0].i); - if (qse_isvalidsckhnd(dns->handle[1].i)) qse_closesckhnd (dns->handle[1].i); + if (qse_isvalidsckhnd(dns->handle[0])) qse_closesckhnd (dns->handle[0]); + if (qse_isvalidsckhnd(dns->handle[1])) qse_closesckhnd (dns->handle[1]); if (dc) qse_httpd_freemem (httpd, dc); return -1; @@ -444,8 +444,8 @@ static void dns_close (qse_httpd_t* httpd, qse_httpd_dns_t* dns) } } - if (qse_isvalidsckhnd(dns->handle[0].i)) qse_closesckhnd (dns->handle[0].i); - if (qse_isvalidsckhnd(dns->handle[1].i)) qse_closesckhnd (dns->handle[1].i); + if (qse_isvalidsckhnd(dns->handle[0])) qse_closesckhnd (dns->handle[0]); + if (qse_isvalidsckhnd(dns->handle[1])) qse_closesckhnd (dns->handle[1]); qse_httpd_freemem (httpd, dns->ctx); } @@ -533,7 +533,7 @@ static dns_ans_t* dns_get_answer_from_cache (dns_ctx_t* dc, const qse_mchar_t* n return QSE_NULL; } -static int dns_recv (qse_httpd_t* httpd, qse_httpd_dns_t* dns, qse_ubi_t handle) +static int dns_recv (qse_httpd_t* httpd, qse_httpd_dns_t* dns, qse_httpd_hnd_t handle) { dns_ctx_t* dc = (dns_ctx_t*)dns->ctx; httpd_xtn_t* httpd_xtn; @@ -563,7 +563,7 @@ printf ("DNS_RECV....\n"); httpd_xtn = qse_httpd_getxtn (httpd); fromlen = QSE_SIZEOF(fromaddr); - len = recvfrom (handle.i, buf, QSE_SIZEOF(buf), 0, (struct sockaddr*)&fromaddr, &fromlen); + len = recvfrom (handle, buf, QSE_SIZEOF(buf), 0, (struct sockaddr*)&fromaddr, &fromlen); if (len < QSE_SIZEOF(*hdr)) goto done; /* packet too small */ @@ -871,9 +871,9 @@ printf ("DNS REALLY SENING>>>>>>>>>>>>>>>>>>>>>>>\n"); if (req->dns_skadlen <= -1) goto default_dns_server; if (dns_server->nwad.type == QSE_NWAD_IN4) - req->dns_socket = dns->handle[0].i; + req->dns_socket = dns->handle[0]; else - req->dns_socket = dns->handle[1].i; + req->dns_socket = dns->handle[1]; dns_flags = dns_server->flags; } diff --git a/qse/lib/http/httpd-std-urs.h b/qse/lib/http/httpd-std-urs.h index fa106f77..b1017e26 100644 --- a/qse/lib/http/httpd-std-urs.h +++ b/qse/lib/http/httpd-std-urs.h @@ -99,8 +99,8 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs) httpd_xtn = qse_httpd_getxtn (httpd); - urs->handle[0].i = QSE_INVALID_SCKHND; - urs->handle[1].i = QSE_INVALID_SCKHND; + urs->handle[0] = QSE_INVALID_SCKHND; + urs->handle[1] = QSE_INVALID_SCKHND; dc = (urs_ctx_t*) qse_httpd_callocmem (httpd, QSE_SIZEOF(urs_ctx_t)); if (dc == NULL) goto oops; @@ -128,12 +128,12 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs) type = SOCK_DGRAM; #endif - urs->handle[0].i = open_udp_socket (httpd, AF_INET, type, proto); + urs->handle[0] = open_udp_socket (httpd, AF_INET, type, proto); #if defined(AF_INET6) - urs->handle[1].i = open_udp_socket (httpd, AF_INET6, type, proto); + urs->handle[1] = open_udp_socket (httpd, AF_INET6, type, proto); #endif - if (!qse_isvalidsckhnd(urs->handle[0].i) && !qse_isvalidsckhnd(urs->handle[1].i)) + if (!qse_isvalidsckhnd(urs->handle[0]) && !qse_isvalidsckhnd(urs->handle[1])) { goto oops; } @@ -145,9 +145,9 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs) if (dc->skadlen >= 0) { if (nwad.type == QSE_NWAD_IN4) - dc->urs_socket = urs->handle[0].i; + dc->urs_socket = urs->handle[0]; else - dc->urs_socket = urs->handle[1].i; + dc->urs_socket = urs->handle[1]; } else { @@ -158,21 +158,21 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs) if (proto == IPPROTO_SCTP) { /* TODO: error ahndleing */ - if (qse_isvalidsckhnd(urs->handle[0].i)) listen (urs->handle[0].i, 99); - if (qse_isvalidsckhnd(urs->handle[1].i)) listen (urs->handle[1].i, 99); + if (qse_isvalidsckhnd(urs->handle[0])) listen (urs->handle[0], 99); + if (qse_isvalidsckhnd(urs->handle[1])) listen (urs->handle[1], 99); } #endif urs->handle_count = 2; - if (qse_isvalidsckhnd(urs->handle[0].i)) urs->handle_mask |= (1 << 0); - if (qse_isvalidsckhnd(urs->handle[1].i)) urs->handle_mask |= (1 << 1); + if (qse_isvalidsckhnd(urs->handle[0])) urs->handle_mask |= (1 << 0); + if (qse_isvalidsckhnd(urs->handle[1])) urs->handle_mask |= (1 << 1); urs->ctx = dc; return 0; oops: - if (qse_isvalidsckhnd(urs->handle[0].i)) qse_closesckhnd (urs->handle[0].i); - if (qse_isvalidsckhnd(urs->handle[1].i)) qse_closesckhnd (urs->handle[1].i); + if (qse_isvalidsckhnd(urs->handle[0])) qse_closesckhnd (urs->handle[0]); + if (qse_isvalidsckhnd(urs->handle[1])) qse_closesckhnd (urs->handle[1]); if (dc) qse_httpd_freemem (httpd, dc); return -1; @@ -208,13 +208,13 @@ static void urs_close (qse_httpd_t* httpd, qse_httpd_urs_t* urs) QSE_ASSERT (dc->req_count == 0); - if (qse_isvalidsckhnd(urs->handle[0].i)) qse_closesckhnd (urs->handle[0].i); - if (qse_isvalidsckhnd(urs->handle[1].i)) qse_closesckhnd (urs->handle[1].i); + if (qse_isvalidsckhnd(urs->handle[0])) qse_closesckhnd (urs->handle[0]); + if (qse_isvalidsckhnd(urs->handle[1])) qse_closesckhnd (urs->handle[1]); qse_httpd_freemem (httpd, urs->ctx); } -static int urs_recv (qse_httpd_t* httpd, qse_httpd_urs_t* urs, qse_ubi_t handle) +static int urs_recv (qse_httpd_t* httpd, qse_httpd_urs_t* urs, qse_httpd_hnd_t handle) { urs_ctx_t* dc = (urs_ctx_t*)urs->ctx; httpd_xtn_t* httpd_xtn; @@ -234,7 +234,7 @@ printf ("URS_RECV............................................\n"); /* TODO: use recvmsg with MSG_ERRQUEUE... set socket option IP_RECVERR... */ fromlen = QSE_SIZEOF(fromaddr); - len = recvfrom (handle.i, dc->rcvbuf, QSE_SIZEOF(dc->rcvbuf) - 1, 0, (struct sockaddr*)&fromaddr, &fromlen); + len = recvfrom (handle, dc->rcvbuf, QSE_SIZEOF(dc->rcvbuf) - 1, 0, (struct sockaddr*)&fromaddr, &fromlen); /* TODO: check if fromaddr matches the dc->skad... */ @@ -410,9 +410,9 @@ printf ("... URS_SEND.....................\n"); if (req->urs_skadlen <= -1) goto default_urs_server; if (urs_server->nwad.type == QSE_NWAD_IN4) - req->urs_socket = urs->handle[0].i; + req->urs_socket = urs->handle[0]; else - req->urs_socket = urs->handle[1].i; + req->urs_socket = urs->handle[1]; } else { diff --git a/qse/lib/http/httpd-std.c b/qse/lib/http/httpd-std.c index 1460b313..5e85b55f 100644 --- a/qse/lib/http/httpd-std.c +++ b/qse/lib/http/httpd-std.c @@ -107,6 +107,15 @@ # include #endif + +#define HANDLE_TO_FIO(x) ((qse_fio_t*)(x)) +#define FIO_TO_HANDLE(x) ((qse_httpd_hnd_t)(x)) + +#if defined(HAVE_SSL) +#define HANDLE_TO_SSL(x) ((SSL*)(x)) +#define SSL_TO_HANDLE(x) ((qse_httpd_hnd_t)(x)) +#endif + typedef struct server_xtn_t server_xtn_t; struct server_xtn_t { @@ -378,7 +387,7 @@ static qse_httpd_errnum_t direrr_to_errnum (qse_dir_errnum_t e) /* ------------------------------------------------------------------- */ static QSE_INLINE qse_ssize_t __send_file ( - qse_httpd_t* httpd, qse_sck_hnd_t out_fd, qse_ubi_t in_fd, + qse_httpd_t* httpd, qse_sck_hnd_t out_fd, qse_httpd_hnd_t in_fd, qse_foff_t* offset, qse_size_t count) { /* TODO: os2 warp 4.5 has send_file. support it??? load it dynamically??? */ @@ -392,7 +401,7 @@ static QSE_INLINE qse_ssize_t __send_file ( qse_ssize_t ret; qse_fio_hnd_t fh; - fh = qse_fio_gethandle (in_fd.ptr); + fh = qse_fio_gethandle (HANDLE_TO_FIO(in_fd)); #if !defined(_LP64) && (QSE_SIZEOF_VOID_P<8) && defined(HAVE_SENDFILE64) ret = sendfile64 (out_fd, fh, offset, count); @@ -407,7 +416,7 @@ static QSE_INLINE qse_ssize_t __send_file ( qse_ssize_t ret; qse_fio_hnd_t fh; - fh = qse_fio_gethandle (in_fd.ptr); + fh = qse_fio_gethandle (HANDLE_TO_FIO(in_fd)); ret = sendfile (out_fd, fh, offset, count); if (ret <= -1) qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM()); return ret; @@ -417,7 +426,7 @@ static QSE_INLINE qse_ssize_t __send_file ( qse_ssize_t ret; qse_fio_hnd_t fh; - fh = qse_fio_gethandle (in_fd.ptr); + fh = qse_fio_gethandle (HANDLE_TO_FIO(in_fd)); ret = sendfile64 (out_fd, fh, offset, count); if (ret <= -1) qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM()); return ret; @@ -435,7 +444,7 @@ static QSE_INLINE qse_ssize_t __send_file ( ssize_t ret; qse_fio_hnd_t fh; - fh = qse_fio_gethandle(in_fd.ptr); + fh = qse_fio_gethandle (HANDLE_TO_FIO(in_fd)); vec.sfv_fd = fh; vec.sfv_flag = 0; @@ -471,17 +480,17 @@ on failure xfer != ret. qse_ssize_t ret; qse_foff_t foff; - if (offset && (foff = qse_fio_seek (in_fd.ptr, *offset, QSE_FIO_BEGIN)) != *offset) + if (offset && (foff = qse_fio_seek (HANDLE_TO_FIO(in_fd), *offset, QSE_FIO_BEGIN)) != *offset) { if (foff == (qse_foff_t)-1) - qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(in_fd.ptr))); + qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(HANDLE_TO_FIO(in_fd)))); else qse_httpd_seterrnum (httpd, QSE_HTTPD_ESYSERR); return (qse_ssize_t)-1; } if (count > QSE_COUNTOF(buf)) count = QSE_COUNTOF(buf); - ret = qse_fio_read (in_fd.ptr, buf, count); + ret = qse_fio_read (HANDLE_TO_FIO(in_fd), buf, count); if (ret > 0) { ret = send (out_fd, buf, ret, 0); @@ -493,7 +502,7 @@ on failure xfer != ret. } else if (ret <= -1) { - qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(in_fd.ptr))); + qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(HANDLE_TO_FIO(in_fd)))); } return ret; @@ -504,7 +513,7 @@ on failure xfer != ret. /* ------------------------------------------------------------------- */ static QSE_INLINE qse_ssize_t __send_file_ssl ( - qse_httpd_t* httpd, void* xout, qse_ubi_t in_fd, + qse_httpd_t* httpd, void* xout, qse_httpd_hnd_t in_fd, qse_foff_t* offset, qse_size_t count) { #if defined(HAVE_SSL) @@ -513,17 +522,17 @@ static QSE_INLINE qse_ssize_t __send_file_ssl ( qse_foff_t foff; SSL* out = (SSL*)xout; - if (offset && (foff = qse_fio_seek (in_fd.ptr, *offset, QSE_FIO_BEGIN)) != *offset) + if (offset && (foff = qse_fio_seek (HANDLE_TO_FIO(in_fd), *offset, QSE_FIO_BEGIN)) != *offset) { if (foff == (qse_foff_t)-1) - qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(in_fd.ptr))); + qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(HANDLE_TO_FIO(in_fd)))); else qse_httpd_seterrnum (httpd, QSE_HTTPD_ESYSERR); return (qse_ssize_t)-1; } if (count > QSE_COUNTOF(buf)) count = QSE_COUNTOF(buf); - ret = qse_fio_read (in_fd.ptr, buf, count); + ret = qse_fio_read (HANDLE_TO_FIO(in_fd), buf, count); if (ret > 0) { ret = SSL_write (out, buf, count); @@ -542,7 +551,7 @@ static QSE_INLINE qse_ssize_t __send_file_ssl ( } else if (ret <= -1) { - qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(in_fd.ptr))); + qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(HANDLE_TO_FIO(in_fd)))); } return ret; @@ -911,7 +920,7 @@ bind_ok: if (set_socket_nonblock (httpd, fd, 1) <= -1) goto oops; - server->handle.i = fd; + server->handle = fd; return 0; oops: @@ -922,7 +931,7 @@ oops: static void server_close (qse_httpd_t* httpd, qse_httpd_server_t* server) { - qse_closesckhnd (server->handle.i); + qse_closesckhnd (server->handle); } static int server_accept ( @@ -939,7 +948,7 @@ static int server_accept ( int flag; addrlen = QSE_SIZEOF(addr); - fd = accept (server->handle.i, (struct sockaddr*)&addr, &addrlen); + fd = accept (server->handle, (struct sockaddr*)&addr, &addrlen); if (!qse_isvalidsckhnd(fd)) { qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM()); @@ -1005,7 +1014,7 @@ qse_fprintf (QSE_STDERR, QSE_T("Error: too many client?\n")); } #endif - client->handle.i = fd; + client->handle = fd; return 0; oops: @@ -1117,7 +1126,7 @@ static int peer_open (qse_httpd_t* httpd, qse_httpd_peer_t* peer) /*if (set_socket_nonblock (httpd, fd, 0) <= -1) goto oops;*/ - peer->handle.i = fd; + peer->handle = fd; return connected; oops: @@ -1131,7 +1140,7 @@ oops: static void peer_close (qse_httpd_t* httpd, qse_httpd_peer_t* peer) { - qse_closesckhnd (peer->handle.i); + qse_closesckhnd (peer->handle); } static int peer_connected (qse_httpd_t* httpd, qse_httpd_peer_t* peer) @@ -1141,7 +1150,7 @@ static int peer_connected (qse_httpd_t* httpd, qse_httpd_peer_t* peer) DWORD ret; len = QSE_SIZEOF(ret); - if (getsockopt (peer->handle.i, SOL_SOCKET, SO_ERROR, (char*)&ret, &len) == SOCKET_ERROR) + if (getsockopt (peer->handle, SOL_SOCKET, SO_ERROR, (char*)&ret, &len) == SOCKET_ERROR) { qse_httpd_seterrnum (httpd, skerr_to_errnum (ret)); return -1; @@ -1162,7 +1171,7 @@ static int peer_connected (qse_httpd_t* httpd, qse_httpd_peer_t* peer) int ret; len = QSE_SIZEOF(ret); - if (getsockopt (peer->handle.i, SOL_SOCKET, SO_ERROR, (char*)&ret, &len) == -1) + if (getsockopt (peer->handle, SOL_SOCKET, SO_ERROR, (char*)&ret, &len) == -1) { qse_httpd_seterrnum (httpd, skerr_to_errnum (ret)); return -1; @@ -1189,7 +1198,7 @@ static int peer_connected (qse_httpd_t* httpd, qse_httpd_peer_t* peer) int ret; len = QSE_SIZEOF(ret); - if (getsockopt (peer->handle.i, SOL_SOCKET, SO_ERROR, &ret, &len) <= -1) + if (getsockopt (peer->handle, SOL_SOCKET, SO_ERROR, &ret, &len) <= -1) { qse_httpd_seterrnum (httpd, skerr_to_errnum (ret)); return -1; @@ -1214,7 +1223,7 @@ static qse_ssize_t peer_recv ( qse_httpd_seterrnum (httpd, QSE_HTTPD_ENOIMPL); return -1; #else - qse_ssize_t ret = recv (peer->handle.i, buf, bufsize, 0); + qse_ssize_t ret = recv (peer->handle, buf, bufsize, 0); if (ret <= -1) qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM()); return ret; #endif @@ -1228,7 +1237,7 @@ static qse_ssize_t peer_send ( qse_httpd_seterrnum (httpd, QSE_HTTPD_ENOIMPL); return -1; #else - qse_ssize_t ret = send (peer->handle.i, buf, bufsize, 0); + qse_ssize_t ret = send (peer->handle, buf, bufsize, 0); if (ret <= -1) qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM()); return ret; #endif @@ -1246,16 +1255,16 @@ struct mux_xtn_t static void dispatch_muxcb (qse_mux_t* mux, const qse_mux_evt_t* evt) { mux_xtn_t* xtn; - qse_ubi_t ubi; + qse_httpd_hnd_t handle; int mask = 0; xtn = qse_mux_getxtn (mux); - ubi.i = evt->hnd; + handle = evt->hnd; if (evt->mask & QSE_MUX_IN) mask |= QSE_HTTPD_MUX_READ; if (evt->mask & QSE_MUX_OUT) mask |= QSE_HTTPD_MUX_WRITE; - xtn->cbfun (xtn->httpd, mux, ubi, mask, evt->data); + xtn->cbfun (xtn->httpd, mux, handle, mask, evt->data); } static void* mux_open (qse_httpd_t* httpd, qse_httpd_muxcb_t cbfun) @@ -1282,11 +1291,11 @@ static void mux_close (qse_httpd_t* httpd, void* vmux) } static int mux_addhnd ( - qse_httpd_t* httpd, void* vmux, qse_ubi_t handle, int mask, void* data) + qse_httpd_t* httpd, void* vmux, qse_httpd_hnd_t handle, int mask, void* data) { qse_mux_evt_t evt; - evt.hnd = handle.i; + evt.hnd = handle; evt.mask = 0; if (mask & QSE_HTTPD_MUX_READ) evt.mask |= QSE_MUX_IN; if (mask & QSE_HTTPD_MUX_WRITE) evt.mask |= QSE_MUX_OUT; @@ -1301,10 +1310,10 @@ static int mux_addhnd ( return 0; } -static int mux_delhnd (qse_httpd_t* httpd, void* vmux, qse_ubi_t handle) +static int mux_delhnd (qse_httpd_t* httpd, void* vmux, qse_httpd_hnd_t handle) { qse_mux_evt_t evt; - evt.hnd = handle.i; + evt.hnd = handle; if (qse_mux_delete ((qse_mux_t*)vmux, &evt) <= -1) { qse_httpd_seterrnum (httpd, muxerr_to_errnum(qse_mux_geterrnum((qse_mux_t*)vmux))); @@ -1324,13 +1333,13 @@ static int mux_poll (qse_httpd_t* httpd, void* vmux, const qse_ntime_t* tmout) return 0; } -static int mux_readable (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t* tmout) +static int mux_readable (qse_httpd_t* httpd, qse_httpd_hnd_t handle, const qse_ntime_t* tmout) { #if defined(__OS2__) && !defined(TCPV40HDRS) long tv; tv = tmout? QSE_SECNSEC_TO_MSEC (tmout->sec, tmout->nsec): -1; - return os2_select (&handle.i, 1, 0, 0, tv); + return os2_select (&handle, 1, 0, 0, tv); #elif defined(__DOS__) @@ -1342,7 +1351,7 @@ static int mux_readable (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t struct timeval tv, * tvp; FD_ZERO (&r); - FD_SET (handle.i, &r); + FD_SET (handle, &r); if (tmout) { @@ -1352,16 +1361,16 @@ static int mux_readable (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t } else tvp = QSE_NULL; - return select (handle.i + 1, &r, QSE_NULL, QSE_NULL, tvp); + return select (handle + 1, &r, QSE_NULL, QSE_NULL, tvp); #endif } -static int mux_writable (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t* tmout) +static int mux_writable (qse_httpd_t* httpd, qse_httpd_hnd_t handle, const qse_ntime_t* tmout) { #if defined(__OS2__) && !defined(TCPV40HDRS) long tv; tv = tmout? QSE_SECNSEC_TO_MSEC (tmout->sec, tmout->nsec): -1; - return os2_select (&handle.i, 0, 1, 0, tv); + return os2_select (&handle, 0, 1, 0, tv); #elif defined(__DOS__) @@ -1373,7 +1382,7 @@ static int mux_writable (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t struct timeval tv, * tvp; FD_ZERO (&w); - FD_SET (handle.i, &w); + FD_SET (handle, &w); if (tmout) { @@ -1383,7 +1392,7 @@ static int mux_writable (qse_httpd_t* httpd, qse_ubi_t handle, const qse_ntime_t } else tvp = QSE_NULL; - return select (handle.i + 1, QSE_NULL, &w, QSE_NULL, tvp); + return select (handle + 1, QSE_NULL, &w, QSE_NULL, tvp); #endif } @@ -1598,14 +1607,14 @@ static qse_fio_t* __open_file (qse_httpd_t* httpd, const qse_mchar_t* path, int } static int file_ropen ( - qse_httpd_t* httpd, const qse_mchar_t* path, qse_ubi_t* handle) + qse_httpd_t* httpd, const qse_mchar_t* path, qse_httpd_hnd_t* handle) { qse_fio_t* fio; fio = __open_file (httpd, path, QSE_FIO_READ | QSE_FIO_MBSPATH, 0); if (fio == QSE_NULL) return -1; - handle->ptr = fio; + *handle = FIO_TO_HANDLE(fio); if (httpd->opt.trait & QSE_HTTPD_LOGACT) { qse_httpd_act_t msg; @@ -1621,14 +1630,14 @@ static int file_ropen ( static int file_wopen ( qse_httpd_t* httpd, const qse_mchar_t* path, - qse_ubi_t* handle) + qse_httpd_hnd_t* handle) { qse_fio_t* fio; fio = __open_file (httpd, path, QSE_FIO_WRITE | QSE_FIO_CREATE | QSE_FIO_TRUNCATE | QSE_FIO_MBSPATH, 0644); if (fio == QSE_NULL) return -1; - handle->ptr = fio; + *handle = FIO_TO_HANDLE(fio); if (httpd->opt.trait & QSE_HTTPD_LOGACT) { qse_httpd_act_t msg; @@ -1642,27 +1651,27 @@ static int file_wopen ( return 0; } -static void file_close (qse_httpd_t* httpd, qse_ubi_t handle) +static void file_close (qse_httpd_t* httpd, qse_httpd_hnd_t handle) { - qse_fio_fini (handle.ptr); - qse_httpd_freemem (httpd, handle.ptr); + qse_fio_fini (HANDLE_TO_FIO(handle)); + qse_httpd_freemem (httpd, HANDLE_TO_FIO(handle)); } static qse_ssize_t file_read ( - qse_httpd_t* httpd, qse_ubi_t handle, qse_mchar_t* buf, qse_size_t len) + qse_httpd_t* httpd, qse_httpd_hnd_t handle, qse_mchar_t* buf, qse_size_t len) { qse_ssize_t n; - n = qse_fio_read (handle.ptr, buf, len); - if (n <= -1) qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(handle.ptr))); + n = qse_fio_read (HANDLE_TO_FIO(handle), buf, len); + if (n <= -1) qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(HANDLE_TO_FIO(handle)))); return n; } static qse_ssize_t file_write ( - qse_httpd_t* httpd, qse_ubi_t handle, const qse_mchar_t* buf, qse_size_t len) + qse_httpd_t* httpd, qse_httpd_hnd_t handle, const qse_mchar_t* buf, qse_size_t len) { qse_ssize_t n; - n = qse_fio_write (handle.ptr, buf, len); - if (n <= -1) qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(handle.ptr))); + n = qse_fio_write (HANDLE_TO_FIO(handle), buf, len); + if (n <= -1) qse_httpd_seterrnum (httpd, fioerr_to_errnum(qse_fio_geterrnum(HANDLE_TO_FIO(handle)))); return n; } @@ -1759,7 +1768,10 @@ struct dir_t qse_dir_t* dp; }; -static int dir_open (qse_httpd_t* httpd, const qse_mchar_t* path, qse_ubi_t* handle) +#define HANDLE_TO_DIR(x) ((dir_t*)(x)) +#define DIR_TO_HANDLE(x) ((qse_httpd_hnd_t)(x)) + +static int dir_open (qse_httpd_t* httpd, const qse_mchar_t* path, qse_httpd_hnd_t* handle) { dir_t* d; qse_dir_errnum_t direrrnum; @@ -1803,15 +1815,15 @@ static int dir_open (qse_httpd_t* httpd, const qse_mchar_t* path, qse_ubi_t* han httpd->opt.rcb.logact (httpd, &msg); } - handle->ptr = d; + *handle = DIR_TO_HANDLE(d); return 0; } -static void dir_close (qse_httpd_t* httpd, qse_ubi_t handle) +static void dir_close (qse_httpd_t* httpd, qse_httpd_hnd_t handle) { dir_t* d; - d = (dir_t*)handle.ptr; + d = HANDLE_TO_DIR(handle); qse_dir_close (d->dp); @@ -1819,14 +1831,14 @@ static void dir_close (qse_httpd_t* httpd, qse_ubi_t handle) QSE_MMGR_FREE (httpd->mmgr, d); } -static int dir_read (qse_httpd_t* httpd, qse_ubi_t handle, qse_httpd_dirent_t* dirent) +static int dir_read (qse_httpd_t* httpd, qse_httpd_hnd_t handle, qse_httpd_dirent_t* dirent) { dir_t* d; qse_dir_ent_t de; qse_mchar_t* fpath; int n; - d = (dir_t*)handle.ptr; + d = HANDLE_TO_DIR(handle); n = qse_dir_read (d->dp, &de); if (n <= -1) @@ -1856,13 +1868,13 @@ static int dir_read (qse_httpd_t* httpd, qse_ubi_t handle, qse_httpd_dirent_t* d static void client_close (qse_httpd_t* httpd, qse_httpd_client_t* client) { - qse_shutsckhnd (client->handle.i, QSE_SHUTSCKHND_RW); - qse_closesckhnd (client->handle.i); + qse_shutsckhnd (client->handle, QSE_SHUTSCKHND_RW); + qse_closesckhnd (client->handle); } static void client_shutdown (qse_httpd_t* httpd, qse_httpd_client_t* client) { - qse_shutsckhnd (client->handle.i, QSE_SHUTSCKHND_RW); + qse_shutsckhnd (client->handle, QSE_SHUTSCKHND_RW); } static qse_ssize_t client_recv ( @@ -1872,17 +1884,17 @@ static qse_ssize_t client_recv ( if (client->status & QSE_HTTPD_CLIENT_SECURE) { #if defined(HAVE_SSL) - int ret = SSL_read (client->handle2.ptr, buf, bufsize); + int ret = SSL_read (HANDLE_TO_SSL(client->handle2), buf, bufsize); if (ret <= -1) { - int err = SSL_get_error(client->handle2.ptr,ret); + int err = SSL_get_error(HANDLE_TO_SSL(client->handle2),ret); if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) qse_httpd_seterrnum (httpd, QSE_HTTPD_EAGAIN); else qse_httpd_seterrnum (httpd, QSE_HTTPD_ESYSERR); } - if (SSL_pending (client->handle2.ptr) > 0) + if (SSL_pending (HANDLE_TO_SSL(client->handle2)) > 0) client->status |= QSE_HTTPD_CLIENT_PENDING; else client->status &= ~QSE_HTTPD_CLIENT_PENDING; @@ -1900,7 +1912,7 @@ static qse_ssize_t client_recv ( return -1; #else qse_ssize_t ret; - ret = recv (client->handle.i, buf, bufsize, 0); + ret = recv (client->handle, buf, bufsize, 0); if (ret <= -1) qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM()); return ret; #endif @@ -1914,10 +1926,10 @@ static qse_ssize_t client_send ( if (client->status & QSE_HTTPD_CLIENT_SECURE) { #if defined(HAVE_SSL) - int ret = SSL_write (client->handle2.ptr, buf, bufsize); + int ret = SSL_write (HANDLE_TO_SSL(client->handle2), buf, bufsize); if (ret <= -1) { - int err = SSL_get_error(client->handle2.ptr,ret); + int err = SSL_get_error(HANDLE_TO_SSL(client->handle2),ret); if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) qse_httpd_seterrnum (httpd, QSE_HTTPD_EAGAIN); else @@ -1935,7 +1947,7 @@ static qse_ssize_t client_send ( qse_httpd_seterrnum (httpd, QSE_HTTPD_ENOIMPL); return -1; #else - qse_ssize_t ret = send (client->handle.i, buf, bufsize, 0); + qse_ssize_t ret = send (client->handle, buf, bufsize, 0); if (ret <= -1) qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM()); return ret; #endif @@ -1944,15 +1956,15 @@ static qse_ssize_t client_send ( static qse_ssize_t client_sendfile ( qse_httpd_t* httpd, qse_httpd_client_t* client, - qse_ubi_t handle, qse_foff_t* offset, qse_size_t count) + qse_httpd_hnd_t handle, qse_foff_t* offset, qse_size_t count) { if (client->status & QSE_HTTPD_CLIENT_SECURE) { - return __send_file_ssl (httpd, client->handle2.ptr, handle, offset, count); + return __send_file_ssl (httpd, HANDLE_TO_SSL(client->handle2), handle, offset, count); } else { - return __send_file (httpd, client->handle.i, handle, offset, count); + return __send_file (httpd, client->handle, handle, offset, count); } } @@ -1974,20 +1986,21 @@ static int client_accepted (qse_httpd_t* httpd, qse_httpd_client_t* client) return -1; } } - - QSE_ASSERT (xtn->ssl_ctx != QSE_NULL); - if (client->handle2.ptr) + QSE_ASSERT (xtn->ssl_ctx != QSE_NULL); + QSE_ASSERT (QSE_SIZEOF(client->handle2) >= QSE_SIZEOF(ssl)); + + if (HANDLE_TO_SSL(client->handle2)) { - ssl = client->handle2.ptr; + ssl = HANDLE_TO_SSL(client->handle2); } else { ssl = SSL_new (xtn->ssl_ctx); if (ssl == QSE_NULL) return -1; - client->handle2.ptr = ssl; - if (SSL_set_fd (ssl, client->handle.i) == 0) + client->handle2 = SSL_TO_HANDLE(ssl); + if (SSL_set_fd (ssl, client->handle) == 0) { /* don't free ssl here since client_closed() * will free it */ @@ -2000,8 +2013,7 @@ static int client_accepted (qse_httpd_t* httpd, qse_httpd_client_t* client) ret = SSL_accept (ssl); if (ret <= 0) { - int err; - err = SSL_get_error(ssl,ret); + int err = SSL_get_error(ssl, ret); if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) { /* handshaking isn't complete. */ @@ -2034,10 +2046,10 @@ static void client_closed (qse_httpd_t* httpd, qse_httpd_client_t* client) if (client->status & QSE_HTTPD_CLIENT_SECURE) { #if defined(HAVE_SSL) - if (client->handle2.ptr) + if ((SSL*)client->handle2) { - SSL_shutdown ((SSL*)client->handle2.ptr); /* is this needed? */ - SSL_free ((SSL*)client->handle2.ptr); + SSL_shutdown ((SSL*)client->handle2); /* is this needed? */ + SSL_free ((SSL*)client->handle2); } #endif } diff --git a/qse/lib/http/httpd.c b/qse/lib/http/httpd.c index b412e26e..8aff80d6 100644 --- a/qse/lib/http/httpd.c +++ b/qse/lib/http/httpd.c @@ -53,7 +53,7 @@ struct htrd_xtn_t static void free_server_list (qse_httpd_t* httpd); static int perform_client_task ( - qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mask, void* cbarg); + qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle, int mask, void* cbarg); static void unload_all_modules (qse_httpd_t* httpd); qse_http_version_t qse_http_v11 = { 1, 1 }; @@ -391,7 +391,7 @@ static QSE_INLINE int dequeue_task ( { if (client->status & QSE_HTTPD_CLIENT_TASK_TRIGGER_RW_IN_MUX(i)) { - QSE_ASSERT (task->core.trigger.v[i].handle.i != client->handle.i); + QSE_ASSERT (task->core.trigger.v[i].handle != client->handle); httpd->opt.scb.mux.delhnd (httpd, httpd->mux, task->core.trigger.v[i].handle); client->status &= ~QSE_HTTPD_CLIENT_TASK_TRIGGER_RW_IN_MUX(i); } @@ -627,7 +627,7 @@ static int is_client_allowed (qse_httpd_t* httpd, qse_httpd_client_t* client) #endif static int accept_client ( - qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mask, void* cbarg) + qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle, int mask, void* cbarg) { qse_httpd_server_t* server; qse_httpd_client_t clibuf; @@ -647,7 +647,7 @@ static int accept_client ( /* TODO: proper logging */ qse_char_t tmp[128]; qse_nwadtostr (&server->dope.nwad, tmp, QSE_COUNTOF(tmp), QSE_NWADTOSTR_ALL); -qse_printf (QSE_T("failed to accept from server [%s] [%d]\n"), tmp, server->handle.i); +qse_printf (QSE_T("failed to accept from server [%s] [%d]\n"), tmp, server->handle); #endif return -1; @@ -909,9 +909,6 @@ static int activate_dns (qse_httpd_t* httpd) int i; QSE_MEMSET (&httpd->dns, 0, QSE_SIZEOF(httpd->dns)); - for (i = 0; i < QSE_COUNTOF(httpd->dns.handle); i++) - httpd->dns.handle[i].i = -1; - if (httpd->opt.scb.dns.open (httpd, &httpd->dns) <= -1) return -1; httpd->dns.type = QSE_HTTPD_DNS; @@ -956,7 +953,6 @@ static int activate_urs (qse_httpd_t* httpd) int i; QSE_MEMSET (&httpd->urs, 0, QSE_SIZEOF(httpd->urs)); - if (httpd->opt.scb.urs.open (httpd, &httpd->urs) <= -1) return -1; httpd->urs.type = QSE_HTTPD_URS; @@ -1035,7 +1031,7 @@ reread: else if (m == 0) { #if 0 -qse_printf (QSE_T("Debug: connection closed %d\n"), client->handle.i); +qse_printf (QSE_T("Debug: connection closed %d\n"), client->handle); #endif /* reading from the client returned 0. this typically * happens when the client closes the connection or @@ -1051,14 +1047,14 @@ qse_printf (QSE_T("Debug: connection closed %d\n"), client->handle.i); * http reader is not waiting for any more feeds. */ client->status |= QSE_HTTPD_CLIENT_MUTE; #if 0 -qse_printf (QSE_T(">>>>> Marking client %d as MUTE\n"), client->handle.i); +qse_printf (QSE_T(">>>>> Marking client %d as MUTE\n"), client->handle); #endif return 0; } else { #if 0 -qse_printf (QSE_T(">>>>> Returning failure for client %d\n"), client->handle.i); +qse_printf (QSE_T(">>>>> Returning failure for client %d\n"), client->handle); #endif httpd->errnum = QSE_HTTPD_EDISCON; return -1; @@ -1066,7 +1062,7 @@ qse_printf (QSE_T(">>>>> Returning failure for client %d\n"), client->handle.i); } #if 0 -qse_printf (QSE_T("!!!!!FEEDING %d from %d ["), (int)m, (int)client->handle.i); +qse_printf (QSE_T("!!!!!FEEDING %d from %d ["), (int)m, (int)client->handle); #if !defined(__WATCOMC__) { int i; @@ -1091,7 +1087,7 @@ qse_printf (QSE_T("]\n")); } #if 0 -qse_printf (QSE_T("Error: http error while processing %d ["), (int)client->handle.i); +qse_printf (QSE_T("Error: http error while processing %d ["), (int)client->handle); { int i; for (i = 0; i < m; i++) qse_printf (QSE_T("%hc"), buf[i]); @@ -1103,7 +1099,7 @@ qse_printf (QSE_T("]\n")); #if 0 -qse_printf (QSE_T("!!!!!FEEDING OK OK OK OK %d from %d\n"), (int)m, (int)client->handle.i); +qse_printf (QSE_T("!!!!!FEEDING OK OK OK OK %d from %d\n"), (int)m, (int)client->handle); #endif if (client->status & QSE_HTTPD_CLIENT_PENDING) @@ -1223,7 +1219,7 @@ static int update_mux_for_current_task (qse_httpd_t* httpd, qse_httpd_client_t* int expected_trigger_mux_mask = 0; int expected_trigger_mux_status = 0; - if (task->trigger.v[i].handle.i == client->handle.i) continue; /* TODO: no direct comparision */ + if (task->trigger.v[i].handle == client->handle) continue; if (task->trigger.v[i].mask & QSE_HTTPD_TASK_TRIGGER_READ) { @@ -1370,14 +1366,13 @@ static int update_mux_for_next_task (qse_httpd_t* httpd, qse_httpd_client_t* cli static int invoke_client_task ( qse_httpd_t* httpd, qse_httpd_client_t* client, - qse_ubi_t handle, int mask) + qse_httpd_hnd_t handle, int mask) { qse_httpd_task_t* task; qse_size_t i; int n, trigger_fired; -/* TODO: handle comparison callback ... */ - if (handle.i == client->handle.i && (mask & QSE_HTTPD_MUX_READ)) /* TODO: no direct comparision */ + if (handle == client->handle && (mask & QSE_HTTPD_MUX_READ)) { /* keep reading from the client-side as long as * it's readable. */ @@ -1407,7 +1402,7 @@ static int invoke_client_task ( trigger_fired = 0; clear_trigger_mask_result (task); - if (handle.i == client->handle.i) /* TODO: no direct comparison */ + if (handle == client->handle) { if (mask & QSE_HTTPD_MUX_READ) { @@ -1426,7 +1421,7 @@ static int invoke_client_task ( { for (i = 0; i < QSE_COUNTOF(task->trigger.v); i++) { - if (task->trigger.v[i].handle.i == handle.i) /* TODO: no direct comparision */ + if (task->trigger.v[i].handle == handle) { if (mask & QSE_HTTPD_MUX_READ) { @@ -1496,7 +1491,7 @@ static int invoke_client_task ( } static int perform_client_task ( - qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mask, void* cbarg) + qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle, int mask, void* cbarg) { qse_httpd_client_t* client; @@ -1535,7 +1530,7 @@ oops: return -1; } -static int perform_dns (qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mask, void* cbarg) +static int perform_dns (qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle, int mask, void* cbarg) { qse_httpd_dns_t* dns = (qse_httpd_dns_t*)cbarg; @@ -1545,7 +1540,7 @@ static int perform_dns (qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mas return httpd->opt.scb.dns.recv (httpd, dns, handle); } -static int perform_urs (qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mask, void* cbarg) +static int perform_urs (qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle, int mask, void* cbarg) { qse_httpd_urs_t* urs = (qse_httpd_urs_t*)cbarg; @@ -1609,7 +1604,7 @@ qse_httpd_task_t* qse_httpd_entask ( } static int dispatch_mux ( - qse_httpd_t* httpd, void* mux, qse_ubi_t handle, int mask, void* cbarg) + qse_httpd_t* httpd, void* mux, qse_httpd_hnd_t handle, int mask, void* cbarg) { switch (((qse_httpd_mate_t*)cbarg)->type) { diff --git a/qse/lib/http/upxd.c b/qse/lib/http/upxd.c index fe9f500c..90d0d241 100644 --- a/qse/lib/http/upxd.c +++ b/qse/lib/http/upxd.c @@ -115,7 +115,7 @@ QSE_INLINE void qse_upxd_freemem (qse_upxd_t* upxd, void* ptr) static int perform_session_task ( - qse_upxd_t* upxd, void* mux, qse_ubi_t handle, void* cbarg) + qse_upxd_t* upxd, void* mux, qse_upxd_hnd_t handle, void* cbarg) { qse_upxd_server_session_t* session; qse_upxd_server_t* server; @@ -154,7 +154,7 @@ static int perform_session_task ( } static int perform_server_task ( - qse_upxd_t* upxd, void* mux, qse_ubi_t handle, void* cbarg) + qse_upxd_t* upxd, void* mux, qse_upxd_hnd_t handle, void* cbarg) { qse_upxd_server_t* server; qse_upxd_server_session_t* session;