added some urs code
This commit is contained in:
@ -24,5 +24,5 @@ libqsehttp_la_SOURCES = \
|
||||
upxd.c
|
||||
|
||||
libqsehttp_la_LDFLAGS = -L../cmn -version-info 1:0:0 -no-undefined
|
||||
libqsehttp_la_LIBADD = -lqsecmn $(SOCKET_LIBS) $(SENDFILE_LIBS) $(SSL_LIBS)
|
||||
libqsehttp_la_LIBADD = -lqsecmn $(SOCKET_LIBS) $(SENDFILE_LIBS) $(SSL_LIBS)
|
||||
|
||||
|
@ -55,6 +55,7 @@ subdir = lib/http
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \
|
||||
$(top_srcdir)/m4/ax_check_sign.m4 \
|
||||
$(top_srcdir)/m4/ax_cxx_namespace.m4 \
|
||||
$(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltdl.m4 \
|
||||
@ -345,7 +346,7 @@ libqsehttp_la_SOURCES = \
|
||||
upxd.c
|
||||
|
||||
libqsehttp_la_LDFLAGS = -L../cmn -version-info 1:0:0 -no-undefined
|
||||
libqsehttp_la_LIBADD = -lqsecmn $(SOCKET_LIBS) $(SENDFILE_LIBS) $(SSL_LIBS)
|
||||
libqsehttp_la_LIBADD = -lqsecmn $(SOCKET_LIBS) $(SENDFILE_LIBS) $(SSL_LIBS)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
|
@ -545,7 +545,7 @@ static QSE_INLINE int task_main_getdir (
|
||||
qse_httpd_reqsum_t reqsum;
|
||||
|
||||
acc.remote = remote;
|
||||
acc.qpath = qpath;
|
||||
acc.qpath = qpath;
|
||||
acc.status = 200;
|
||||
acc.version = ...;
|
||||
acc.method = ...;
|
||||
|
@ -357,12 +357,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);
|
||||
dns->handle[0].i = open_udp_socket (httpd, AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
#if defined(AF_INET6)
|
||||
dns->handle[1].i = open_udp_socket (httpd, AF_INET6);
|
||||
dns->handle[1].i = open_udp_socket (httpd, AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
|
||||
#endif
|
||||
if (!is_valid_socket(dns->handle[0].i) &&
|
||||
!is_valid_socket(dns->handle[1].i))
|
||||
if (!qse_isvalidsckhnd(dns->handle[0].i) && !qse_isvalidsckhnd(dns->handle[1].i))
|
||||
{
|
||||
goto oops;
|
||||
}
|
||||
@ -380,7 +379,7 @@ static int dns_open (qse_httpd_t* httpd, qse_httpd_dns_t* dns)
|
||||
}
|
||||
else
|
||||
{
|
||||
dc->dns_socket = SOCK_INVALID;
|
||||
dc->dns_socket = QSE_INVALID_SCKHND;
|
||||
}
|
||||
|
||||
dns->handle_count = 2;
|
||||
@ -389,8 +388,8 @@ static int dns_open (qse_httpd_t* httpd, qse_httpd_dns_t* dns)
|
||||
return 0;
|
||||
|
||||
oops:
|
||||
if (is_valid_socket(dns->handle[0].i)) close_socket (dns->handle[0].i);
|
||||
if (is_valid_socket(dns->handle[1].i)) close_socket (dns->handle[1].i);
|
||||
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 (dc) qse_httpd_freemem (httpd, dc);
|
||||
return -1;
|
||||
|
||||
@ -441,8 +440,8 @@ static void dns_close (qse_httpd_t* httpd, qse_httpd_dns_t* dns)
|
||||
|
||||
for (i = 0; i < dns->handle_count; i++)
|
||||
{
|
||||
if (is_valid_socket(dns->handle[i].i))
|
||||
close_socket (dns->handle[i].i);
|
||||
if (qse_isvalidsckhnd(dns->handle[i].i))
|
||||
qse_closesckhnd (dns->handle[i].i);
|
||||
}
|
||||
qse_httpd_freemem (httpd, dns->ctx);
|
||||
}
|
||||
|
@ -33,10 +33,10 @@ typedef struct urs_req_t urs_req_t;
|
||||
#include <qse/pack1.h>
|
||||
struct urs_hdr_t
|
||||
{
|
||||
qse_uint16_t seq; /* in network-byte order */
|
||||
qse_uint16_t rcode; /* response code */
|
||||
qse_uint32_t qusum;/* checksum of url in the request */
|
||||
qse_uint16_t len; /* url length in network-byte order */
|
||||
qse_uint16_t seq; /* in network-byte order */
|
||||
qse_uint16_t rcode; /* response code */
|
||||
qse_uint32_t urlsum; /* checksum of url in the request */
|
||||
qse_uint16_t urllen; /* url length in network-byte order */
|
||||
};
|
||||
|
||||
struct urs_pkt_t
|
||||
@ -95,6 +95,7 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
|
||||
qse_nwad_t nwad;
|
||||
urs_ctx_t* dc;
|
||||
httpd_xtn_t* httpd_xtn;
|
||||
int type, proto = IPPROTO_SCTP;
|
||||
|
||||
httpd_xtn = qse_httpd_getxtn (httpd);
|
||||
|
||||
@ -118,12 +119,14 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
|
||||
httpd->opt.rcb.logact (httpd, &msg);
|
||||
}
|
||||
|
||||
urs->handle[0].i = open_udp_socket (httpd, AF_INET);
|
||||
type = (proto == IPPROTO_SCTP)? SOCK_SEQPACKET: SOCK_DGRAM;
|
||||
|
||||
urs->handle[0].i = open_udp_socket (httpd, AF_INET, type, proto);
|
||||
#if defined(AF_INET6)
|
||||
urs->handle[1].i = open_udp_socket (httpd, AF_INET6);
|
||||
urs->handle[1].i = open_udp_socket (httpd, AF_INET6, type, proto);
|
||||
#endif
|
||||
if (!is_valid_socket(urs->handle[0].i) &&
|
||||
!is_valid_socket(urs->handle[1].i))
|
||||
|
||||
if (!qse_isvalidsckhnd(urs->handle[0].i) && !qse_isvalidsckhnd(urs->handle[1].i))
|
||||
{
|
||||
goto oops;
|
||||
}
|
||||
@ -141,17 +144,23 @@ static int urs_open (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
|
||||
}
|
||||
else
|
||||
{
|
||||
dc->urs_socket = SOCK_INVALID;
|
||||
dc->urs_socket = QSE_INVALID_SCKHND;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
urs->handle_count = 2;
|
||||
|
||||
urs->ctx = dc;
|
||||
return 0;
|
||||
|
||||
oops:
|
||||
if (is_valid_socket(urs->handle[0].i)) close_socket (urs->handle[0].i);
|
||||
if (is_valid_socket(urs->handle[1].i)) close_socket (urs->handle[1].i);
|
||||
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 (dc) qse_httpd_freemem (httpd, dc);
|
||||
return -1;
|
||||
|
||||
@ -189,8 +198,8 @@ static void urs_close (qse_httpd_t* httpd, qse_httpd_urs_t* urs)
|
||||
|
||||
for (i = 0; i < urs->handle_count; i++)
|
||||
{
|
||||
if (is_valid_socket(urs->handle[i].i))
|
||||
close_socket (urs->handle[i].i);
|
||||
if (qse_isvalidsckhnd(urs->handle[i].i))
|
||||
qse_closesckhnd (urs->handle[i].i);
|
||||
}
|
||||
|
||||
qse_httpd_freemem (httpd, urs->ctx);
|
||||
@ -220,15 +229,16 @@ printf ("URS_RECV....\n");
|
||||
/* TODO: check if fromaddr matches the dc->skad... */
|
||||
|
||||
pkt = (urs_pkt_t*)dc->rcvbuf;
|
||||
if (len >= QSE_SIZEOF(pkt->hdr) && len >= QSE_SIZEOF(pkt->hdr) + qse_ntoh16(pkt->hdr.len))
|
||||
if (len >= QSE_SIZEOF(pkt->hdr) && len >= QSE_SIZEOF(pkt->hdr) + qse_ntoh16(pkt->hdr.urllen))
|
||||
{
|
||||
xid = qse_ntoh16(pkt->hdr.seq) % QSE_COUNTOF(dc->reqs);
|
||||
|
||||
for (req = dc->reqs[xid]; req; req = req->next)
|
||||
{
|
||||
if (req->pkt->hdr.seq == pkt->hdr.seq && req->pkt->hdr.qusum == pkt->hdr.qusum)
|
||||
if (req->pkt->hdr.seq == pkt->hdr.seq && req->pkt->hdr.urlsum == pkt->hdr.urlsum)
|
||||
{
|
||||
pkt->url[qse_ntoh16(pkt->hdr.len)] = QSE_MT('\0');
|
||||
/* null-terminate the url for easier processing */
|
||||
pkt->url[qse_ntoh16(pkt->hdr.urllen)] = QSE_MT('\0');
|
||||
|
||||
urs_remove_tmr_tmout (httpd, req);
|
||||
req->rewrite (httpd, req->pkt->url, pkt->url, req->ctx);
|
||||
@ -329,11 +339,10 @@ static int urs_send (qse_httpd_t* httpd, qse_httpd_urs_t* urs, const qse_mchar_t
|
||||
urs_req_t* req = QSE_NULL;
|
||||
qse_size_t url_len;
|
||||
qse_tmr_event_t tmout_event;
|
||||
|
||||
|
||||
httpd_xtn = qse_httpd_getxtn (httpd);
|
||||
|
||||
printf ("URS REALLY SENING>>>>>>>>>>>>>>>>>>>>>>>\n");
|
||||
|
||||
if (dc->req_count >= QSE_COUNTOF(dc->reqs))
|
||||
{
|
||||
/* too many pending requests */
|
||||
@ -361,8 +370,8 @@ printf ("URS REALLY SENING>>>>>>>>>>>>>>>>>>>>>>>\n");
|
||||
req->pkt = (urs_pkt_t*)(req + 1);
|
||||
|
||||
req->pkt->hdr.seq = qse_hton16(seq);
|
||||
req->pkt->hdr.len = qse_hton16(url_len);
|
||||
req->pkt->hdr.qusum = hash_string (url);
|
||||
req->pkt->hdr.urllen = qse_hton16(url_len);
|
||||
req->pkt->hdr.urlsum = hash_string (url);
|
||||
qse_mbscpy (req->pkt->url, url);
|
||||
|
||||
/* -1 to exclude the terminating '\0' as urs_pkt_t has url[1]. */
|
||||
@ -412,6 +421,21 @@ printf ("URS REALLY SENING>>>>>>>>>>>>>>>>>>>>>>>\n");
|
||||
tmout_event.updater = tmr_urs_tmout_update;
|
||||
if (qse_httpd_inserttimerevent (httpd, &tmout_event, &req->tmr_tmout) <= -1) goto oops;
|
||||
|
||||
/*
|
||||
{
|
||||
struct msghdr msg;
|
||||
struct iovec iov;
|
||||
QSE_MEMSET (&msg, 0, QSE_SIZEOF(msg));
|
||||
msg.msg_name = &req->urs_skad;
|
||||
msg.msg_namelen = req->urs_skadlen;
|
||||
iov.iov_base = req->pkt;
|
||||
iov.iov_len = req->pktlen;
|
||||
msg.msg_iov = &iov;
|
||||
msg.msg_iovlen = 1;
|
||||
if (sendmsg (req->urs_socket, &msg, 0) != req->pktlen)
|
||||
}
|
||||
*/
|
||||
|
||||
if (sendto (req->urs_socket, req->pkt, req->pktlen, 0, (struct sockaddr*)&req->urs_skad, req->urs_skadlen) != req->pktlen)
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include <qse/cmn/dir.h>
|
||||
#include <qse/cmn/fio.h>
|
||||
#include <qse/cmn/sio.h>
|
||||
#include <qse/cmn/sck.h>
|
||||
|
||||
#define STAT_REG 1
|
||||
#define STAT_DIR 2
|
||||
@ -87,6 +88,9 @@
|
||||
# define IP_TRANSPARENT 19
|
||||
# endif
|
||||
# endif
|
||||
# if defined(HAVE_NETINET_SCTP_H)
|
||||
# include <netinet/sctp.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_SSL)
|
||||
@ -651,41 +655,7 @@ void* qse_httpd_getxtnstd (qse_httpd_t* httpd)
|
||||
|
||||
/* ------------------------------------------------------------------- */
|
||||
|
||||
#if defined(_WIN32)
|
||||
typedef SOCKET sock_t;
|
||||
# define SOCK_INVALID INVALID_SOCKET
|
||||
#else
|
||||
typedef int sock_t;
|
||||
# define SOCK_INVALID -1
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_SOCKLEN_T)
|
||||
typedef int socklen_t;
|
||||
#endif
|
||||
|
||||
static QSE_INLINE int is_valid_socket (sock_t fd)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
return fd != INVALID_SOCKET;
|
||||
#else
|
||||
return fd >= 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static QSE_INLINE void close_socket (sock_t fd)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
closesocket (fd);
|
||||
#elif defined(__OS2__)
|
||||
soclose (fd);
|
||||
#elif defined(__DOS__)
|
||||
/* TODO: */
|
||||
#else
|
||||
QSE_CLOSE (fd);
|
||||
#endif
|
||||
}
|
||||
|
||||
static int set_socket_nonblock (qse_httpd_t* httpd, sock_t fd, int enabled)
|
||||
static int set_socket_nonblock (qse_httpd_t* httpd, qse_sck_hnd_t fd, int enabled)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
if (ioctlsocket (fd, FIONBIO, &enabled) == SOCKET_ERROR)
|
||||
@ -723,13 +693,13 @@ static int set_socket_nonblock (qse_httpd_t* httpd, sock_t fd, int enabled)
|
||||
|
||||
}
|
||||
|
||||
static sock_t open_udp_socket (qse_httpd_t* httpd, int domain)
|
||||
static qse_sck_hnd_t open_udp_socket (qse_httpd_t* httpd, int domain, int type, int proto)
|
||||
{
|
||||
sock_t fd;
|
||||
qse_sck_hnd_t fd;
|
||||
int flag;
|
||||
|
||||
fd = socket (domain, SOCK_DGRAM, IPPROTO_UDP);
|
||||
if (!is_valid_socket(fd))
|
||||
fd = socket (domain, type, proto);
|
||||
if (!qse_isvalidsckhnd(fd))
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
goto oops;
|
||||
@ -750,13 +720,34 @@ static sock_t open_udp_socket (qse_httpd_t* httpd, int domain)
|
||||
setsockopt (fd, SOL_SOCKET, SO_REUSEPORT, (void*)&flag, QSE_SIZEOF(flag));
|
||||
#endif
|
||||
|
||||
#if defined(IPV6_V6ONLY)
|
||||
if (domain == AF_INET6)
|
||||
{
|
||||
flag = 1;
|
||||
setsockopt (fd, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&flag, QSE_SIZEOF(flag));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (set_socket_nonblock (httpd, fd, 1) <= -1) goto oops;
|
||||
|
||||
|
||||
if (proto == IPPROTO_SCTP)
|
||||
{
|
||||
struct sctp_initmsg im;
|
||||
|
||||
QSE_MEMSET (&im, 0, QSE_SIZEOF(im));
|
||||
im.sinit_num_ostreams = 1;
|
||||
im.sinit_max_instreams = 1;
|
||||
im.sinit_max_attempts = 1;
|
||||
|
||||
if (setsockopt (fd, SOL_SCTP, SCTP_INITMSG, &im, QSE_SIZEOF(im)) <= -1) goto oops;
|
||||
}
|
||||
|
||||
return fd;
|
||||
|
||||
oops:
|
||||
if (is_valid_socket(fd)) close_socket (fd);
|
||||
return SOCK_INVALID;
|
||||
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
|
||||
return QSE_INVALID_SCKHND;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------- */
|
||||
@ -767,7 +758,7 @@ static int server_open (qse_httpd_t* httpd, qse_httpd_server_t* server)
|
||||
qse_httpd_seterrnum (httpd, QSE_HTTPD_ENOIMPL);
|
||||
return -1;
|
||||
#else
|
||||
sock_t fd = SOCK_INVALID, flag;
|
||||
qse_sck_hnd_t fd = QSE_INVALID_SCKHND, flag;
|
||||
qse_skad_t addr;
|
||||
int addrsize;
|
||||
|
||||
@ -779,7 +770,7 @@ static int server_open (qse_httpd_t* httpd, qse_httpd_server_t* server)
|
||||
}
|
||||
|
||||
fd = socket (qse_skadfamily(&addr), SOCK_STREAM, IPPROTO_TCP);
|
||||
if (!is_valid_socket(fd))
|
||||
if (!qse_isvalidsckhnd(fd))
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
goto oops;
|
||||
@ -861,24 +852,15 @@ static int server_open (qse_httpd_t* httpd, qse_httpd_server_t* server)
|
||||
{
|
||||
int on = 1;
|
||||
setsockopt (fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on));
|
||||
if (bind (fd, (struct sockaddr*)&addr, addrsize) <= -1)
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
goto oops;
|
||||
}
|
||||
if (bind (fd, (struct sockaddr*)&addr, addrsize) == 0) goto bind_ok;
|
||||
}
|
||||
else
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
goto oops;
|
||||
}
|
||||
#else
|
||||
#endif
|
||||
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
goto oops;
|
||||
#endif
|
||||
}
|
||||
|
||||
bind_ok:
|
||||
if (listen (fd, 10) <= -1)
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
@ -891,14 +873,14 @@ static int server_open (qse_httpd_t* httpd, qse_httpd_server_t* server)
|
||||
return 0;
|
||||
|
||||
oops:
|
||||
if (is_valid_socket(fd)) close_socket (fd);
|
||||
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void server_close (qse_httpd_t* httpd, qse_httpd_server_t* server)
|
||||
{
|
||||
close_socket (server->handle.i);
|
||||
qse_closesckhnd (server->handle.i);
|
||||
}
|
||||
|
||||
static int server_accept (
|
||||
@ -910,13 +892,13 @@ static int server_accept (
|
||||
|
||||
#else
|
||||
qse_skad_t addr;
|
||||
socklen_t addrlen;
|
||||
sock_t fd = SOCK_INVALID;
|
||||
qse_sck_len_t addrlen;
|
||||
qse_sck_hnd_t fd = QSE_INVALID_SCKHND;
|
||||
int flag;
|
||||
|
||||
addrlen = QSE_SIZEOF(addr);
|
||||
fd = accept (server->handle.i, (struct sockaddr*)&addr, &addrlen);
|
||||
if (!is_valid_socket(fd))
|
||||
if (!qse_isvalidsckhnd(fd))
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
goto oops;
|
||||
@ -985,7 +967,7 @@ qse_fprintf (QSE_STDERR, QSE_T("Error: too many client?\n"));
|
||||
return 0;
|
||||
|
||||
oops:
|
||||
if (is_valid_socket(fd)) close_socket (fd);
|
||||
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
@ -1005,7 +987,8 @@ static int peer_open (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
|
||||
qse_skad_t connaddr, bindaddr;
|
||||
int connaddrsize, bindaddrsize;
|
||||
int connected = 1;
|
||||
sock_t fd = SOCK_INVALID;
|
||||
qse_sck_hnd_t fd = QSE_INVALID_SCKHND;
|
||||
|
||||
#if defined(_WIN32)
|
||||
unsigned long cmd;
|
||||
#elif defined(__OS2__)
|
||||
@ -1026,7 +1009,7 @@ static int peer_open (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
|
||||
bindaddrsize = qse_nwadtoskad (&peer->local, &bindaddr);
|
||||
|
||||
fd = socket (qse_skadfamily(&connaddr), SOCK_STREAM, IPPROTO_TCP);
|
||||
if (!is_valid_socket(fd))
|
||||
if (!qse_isvalidsckhnd(fd))
|
||||
{
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
goto oops;
|
||||
@ -1038,6 +1021,7 @@ static int peer_open (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
|
||||
setsockopt (fd, SOL_IP, IP_TRANSPARENT, &flag, QSE_SIZEOF(flag));
|
||||
#endif
|
||||
|
||||
/* don't use invalid binding address */
|
||||
if (bindaddrsize >= 0 &&
|
||||
bind (fd, (struct sockaddr*)&bindaddr, bindaddrsize) <= -1)
|
||||
{
|
||||
@ -1096,7 +1080,7 @@ static int peer_open (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
|
||||
|
||||
oops:
|
||||
qse_httpd_seterrnum (httpd, SKERR_TO_ERRNUM());
|
||||
if (is_valid_socket(fd)) close_socket (fd);
|
||||
if (qse_isvalidsckhnd(fd)) qse_closesckhnd (fd);
|
||||
return -1;
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
@ -1105,7 +1089,7 @@ oops:
|
||||
|
||||
static void peer_close (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
|
||||
{
|
||||
close_socket (peer->handle.i);
|
||||
qse_closesckhnd (peer->handle.i);
|
||||
}
|
||||
|
||||
static int peer_connected (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
|
||||
@ -1159,7 +1143,7 @@ static int peer_connected (qse_httpd_t* httpd, qse_httpd_peer_t* peer)
|
||||
|
||||
#else
|
||||
|
||||
socklen_t len;
|
||||
qse_sck_len_t len;
|
||||
int ret;
|
||||
|
||||
len = QSE_SIZEOF(ret);
|
||||
@ -1857,7 +1841,7 @@ static void client_close (qse_httpd_t* httpd, qse_httpd_client_t* client)
|
||||
#else
|
||||
shutdown (client->handle.i, SHUT_RDWR);
|
||||
#endif
|
||||
close_socket (client->handle.i);
|
||||
qse_closesckhnd (client->handle.i);
|
||||
}
|
||||
|
||||
static void client_shutdown (qse_httpd_t* httpd, qse_httpd_client_t* client)
|
||||
|
Reference in New Issue
Block a user