Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
4b2e7fc1
提交
4b2e7fc1
authored
5月 23, 2012
作者:
Anthony Minessale
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
perl update
上级
bb3f72cb
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
237 行增加
和
75 行删除
+237
-75
FSSCGI.pm
libs/libscgi/perl/FSSCGI.pm
+3
-1
scgi_wrap.cpp
libs/libscgi/perl/scgi_wrap.cpp
+111
-31
testclient.pl
libs/libscgi/perl/testclient.pl
+19
-0
testserver.pl
libs/libscgi/perl/testserver.pl
+17
-0
scgi.h
libs/libscgi/src/include/scgi.h
+5
-0
scgi_oop.h
libs/libscgi/src/include/scgi_oop.h
+8
-2
scgi.c
libs/libscgi/src/scgi.c
+19
-12
scgi_oop.cpp
libs/libscgi/src/scgi_oop.cpp
+54
-28
testserver.c
libs/libscgi/testserver.c
+1
-1
没有找到文件。
libs/libscgi/perl/FSSCGI.pm
浏览文件 @
4b2e7fc1
...
...
@@ -79,8 +79,10 @@ sub DESTROY {
*
disconnect
=
*
FSSCGIc::
SCGIhandle_disconnect
;
*
addParam
=
*
FSSCGIc::
SCGIhandle_addParam
;
*
addBody
=
*
FSSCGIc::
SCGIhandle_addBody
;
*
getBody
=
*
FSSCGIc::
SCGIhandle_getBody
;
*
getParam
=
*
FSSCGIc::
SCGIhandle_getParam
;
*
sendRequest
=
*
FSSCGIc::
SCGIhandle_sendRequest
;
*
re
cv
=
*
FSSCGIc::
SCGIhandle_recv
;
*
re
spond
=
*
FSSCGIc::
SCGIhandle_respond
;
*
bind
=
*
FSSCGIc::
SCGIhandle_bind
;
*
accept
=
*
FSSCGIc::
SCGIhandle_accept
;
sub
DISOWN
{
...
...
libs/libscgi/perl/scgi_wrap.cpp
浏览文件 @
4b2e7fc1
...
...
@@ -1556,6 +1556,26 @@ SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
SWIGINTERNINLINE
SV
*
SWIG_FromCharPtrAndSize
(
const
char
*
carray
,
size_t
size
)
{
SV
*
obj
=
sv_newmortal
();
if
(
carray
)
{
sv_setpvn
(
obj
,
carray
,
size
);
}
else
{
sv_setsv
(
obj
,
&
PL_sv_undef
);
}
return
obj
;
}
SWIGINTERNINLINE
SV
*
SWIG_FromCharPtr
(
const
char
*
cptr
)
{
return
SWIG_FromCharPtrAndSize
(
cptr
,
(
cptr
?
strlen
(
cptr
)
:
0
));
}
#include <limits.h>
#if !defined(SWIG_NO_LLONG_MAX)
# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
...
...
@@ -1683,26 +1703,6 @@ SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val)
return
res
;
}
SWIGINTERNINLINE
SV
*
SWIG_FromCharPtrAndSize
(
const
char
*
carray
,
size_t
size
)
{
SV
*
obj
=
sv_newmortal
();
if
(
carray
)
{
sv_setpvn
(
obj
,
carray
,
size
);
}
else
{
sv_setsv
(
obj
,
&
PL_sv_undef
);
}
return
obj
;
}
SWIGINTERNINLINE
SV
*
SWIG_FromCharPtr
(
const
char
*
cptr
)
{
return
SWIG_FromCharPtrAndSize
(
cptr
,
(
cptr
?
strlen
(
cptr
)
:
0
));
}
#ifdef __cplusplus
extern
"C"
{
#endif
...
...
@@ -1951,13 +1951,80 @@ XS(_wrap_SCGIhandle_addBody) {
}
XS
(
_wrap_SCGIhandle_getBody
)
{
{
SCGIhandle
*
arg1
=
(
SCGIhandle
*
)
0
;
char
*
result
=
0
;
void
*
argp1
=
0
;
int
res1
=
0
;
int
argvi
=
0
;
dXSARGS
;
if
((
items
<
1
)
||
(
items
>
1
))
{
SWIG_croak
(
"Usage: SCGIhandle_getBody(self);"
);
}
res1
=
SWIG_ConvertPtr
(
ST
(
0
),
&
argp1
,
SWIGTYPE_p_SCGIhandle
,
0
|
0
);
if
(
!
SWIG_IsOK
(
res1
))
{
SWIG_exception_fail
(
SWIG_ArgError
(
res1
),
"in method '"
"SCGIhandle_getBody"
"', argument "
"1"" of type '"
"SCGIhandle *""'"
);
}
arg1
=
reinterpret_cast
<
SCGIhandle
*
>
(
argp1
);
result
=
(
char
*
)(
arg1
)
->
getBody
();
ST
(
argvi
)
=
SWIG_FromCharPtr
((
const
char
*
)
result
);
argvi
++
;
XSRETURN
(
argvi
);
fail
:
SWIG_croak_null
();
}
}
XS
(
_wrap_SCGIhandle_getParam
)
{
{
SCGIhandle
*
arg1
=
(
SCGIhandle
*
)
0
;
char
*
arg2
=
(
char
*
)
0
;
char
*
result
=
0
;
void
*
argp1
=
0
;
int
res1
=
0
;
int
res2
;
char
*
buf2
=
0
;
int
alloc2
=
0
;
int
argvi
=
0
;
dXSARGS
;
if
((
items
<
2
)
||
(
items
>
2
))
{
SWIG_croak
(
"Usage: SCGIhandle_getParam(self,name);"
);
}
res1
=
SWIG_ConvertPtr
(
ST
(
0
),
&
argp1
,
SWIGTYPE_p_SCGIhandle
,
0
|
0
);
if
(
!
SWIG_IsOK
(
res1
))
{
SWIG_exception_fail
(
SWIG_ArgError
(
res1
),
"in method '"
"SCGIhandle_getParam"
"', argument "
"1"" of type '"
"SCGIhandle *""'"
);
}
arg1
=
reinterpret_cast
<
SCGIhandle
*
>
(
argp1
);
res2
=
SWIG_AsCharPtrAndSize
(
ST
(
1
),
&
buf2
,
NULL
,
&
alloc2
);
if
(
!
SWIG_IsOK
(
res2
))
{
SWIG_exception_fail
(
SWIG_ArgError
(
res2
),
"in method '"
"SCGIhandle_getParam"
"', argument "
"2"" of type '"
"char const *""'"
);
}
arg2
=
reinterpret_cast
<
char
*
>
(
buf2
);
result
=
(
char
*
)(
arg1
)
->
getParam
((
char
const
*
)
arg2
);
ST
(
argvi
)
=
SWIG_FromCharPtr
((
const
char
*
)
result
);
argvi
++
;
if
(
alloc2
==
SWIG_NEWOBJ
)
delete
[]
buf2
;
XSRETURN
(
argvi
);
fail
:
if
(
alloc2
==
SWIG_NEWOBJ
)
delete
[]
buf2
;
SWIG_croak_null
();
}
}
XS
(
_wrap_SCGIhandle_sendRequest
)
{
{
SCGIhandle
*
arg1
=
(
SCGIhandle
*
)
0
;
char
*
arg2
=
(
char
*
)
0
;
int
arg3
;
int
arg4
;
int
result
;
char
*
result
=
0
;
void
*
argp1
=
0
;
int
res1
=
0
;
int
res2
;
...
...
@@ -1993,8 +2060,8 @@ XS(_wrap_SCGIhandle_sendRequest) {
SWIG_exception_fail
(
SWIG_ArgError
(
ecode4
),
"in method '"
"SCGIhandle_sendRequest"
"', argument "
"4"" of type '"
"int""'"
);
}
arg4
=
static_cast
<
int
>
(
val4
);
result
=
(
int
)(
arg1
)
->
sendRequest
((
char
const
*
)
arg2
,
arg3
,
arg4
);
ST
(
argvi
)
=
SWIG_From
_int
SWIG_PERL_CALL_ARGS_1
(
static_cast
<
int
>
(
result
)
);
argvi
++
;
result
=
(
char
*
)(
arg1
)
->
sendRequest
((
char
const
*
)
arg2
,
arg3
,
arg4
);
ST
(
argvi
)
=
SWIG_From
CharPtr
((
const
char
*
)
result
);
argvi
++
;
if
(
alloc2
==
SWIG_NEWOBJ
)
delete
[]
buf2
;
...
...
@@ -2010,29 +2077,40 @@ XS(_wrap_SCGIhandle_sendRequest) {
}
XS
(
_wrap_SCGIhandle_re
cv
)
{
XS
(
_wrap_SCGIhandle_re
spond
)
{
{
SCGIhandle
*
arg1
=
(
SCGIhandle
*
)
0
;
char
*
result
=
0
;
char
*
arg2
=
(
char
*
)
0
;
int
result
;
void
*
argp1
=
0
;
int
res1
=
0
;
int
res2
;
char
*
buf2
=
0
;
int
alloc2
=
0
;
int
argvi
=
0
;
dXSARGS
;
if
((
items
<
1
)
||
(
items
>
1
))
{
SWIG_croak
(
"Usage: SCGIhandle_re
cv(self
);"
);
if
((
items
<
2
)
||
(
items
>
2
))
{
SWIG_croak
(
"Usage: SCGIhandle_re
spond(self,msg
);"
);
}
res1
=
SWIG_ConvertPtr
(
ST
(
0
),
&
argp1
,
SWIGTYPE_p_SCGIhandle
,
0
|
0
);
if
(
!
SWIG_IsOK
(
res1
))
{
SWIG_exception_fail
(
SWIG_ArgError
(
res1
),
"in method '"
"SCGIhandle_re
cv
"
"', argument "
"1"" of type '"
"SCGIhandle *""'"
);
SWIG_exception_fail
(
SWIG_ArgError
(
res1
),
"in method '"
"SCGIhandle_re
spond
"
"', argument "
"1"" of type '"
"SCGIhandle *""'"
);
}
arg1
=
reinterpret_cast
<
SCGIhandle
*
>
(
argp1
);
result
=
(
char
*
)(
arg1
)
->
recv
();
ST
(
argvi
)
=
SWIG_FromCharPtr
((
const
char
*
)
result
);
argvi
++
;
res2
=
SWIG_AsCharPtrAndSize
(
ST
(
1
),
&
buf2
,
NULL
,
&
alloc2
);
if
(
!
SWIG_IsOK
(
res2
))
{
SWIG_exception_fail
(
SWIG_ArgError
(
res2
),
"in method '"
"SCGIhandle_respond"
"', argument "
"2"" of type '"
"char *""'"
);
}
arg2
=
reinterpret_cast
<
char
*
>
(
buf2
);
result
=
(
int
)(
arg1
)
->
respond
(
arg2
);
ST
(
argvi
)
=
SWIG_From_int
SWIG_PERL_CALL_ARGS_1
(
static_cast
<
int
>
(
result
));
argvi
++
;
if
(
alloc2
==
SWIG_NEWOBJ
)
delete
[]
buf2
;
XSRETURN
(
argvi
);
fail
:
if
(
alloc2
==
SWIG_NEWOBJ
)
delete
[]
buf2
;
SWIG_croak_null
();
}
}
...
...
@@ -2154,8 +2232,10 @@ static swig_command_info swig_commands[] = {
{
"FSSCGIc::SCGIhandle_disconnect"
,
_wrap_SCGIhandle_disconnect
},
{
"FSSCGIc::SCGIhandle_addParam"
,
_wrap_SCGIhandle_addParam
},
{
"FSSCGIc::SCGIhandle_addBody"
,
_wrap_SCGIhandle_addBody
},
{
"FSSCGIc::SCGIhandle_getBody"
,
_wrap_SCGIhandle_getBody
},
{
"FSSCGIc::SCGIhandle_getParam"
,
_wrap_SCGIhandle_getParam
},
{
"FSSCGIc::SCGIhandle_sendRequest"
,
_wrap_SCGIhandle_sendRequest
},
{
"FSSCGIc::SCGIhandle_re
cv"
,
_wrap_SCGIhandle_recv
},
{
"FSSCGIc::SCGIhandle_re
spond"
,
_wrap_SCGIhandle_respond
},
{
"FSSCGIc::SCGIhandle_bind"
,
_wrap_SCGIhandle_bind
},
{
"FSSCGIc::SCGIhandle_accept"
,
_wrap_SCGIhandle_accept
},
{
0
,
0
}
...
...
libs/libscgi/perl/testclient.pl
0 → 100644
浏览文件 @
4b2e7fc1
use
FSSCGI
;
my
$handle
=
new
FSSCGI::
SCGIhandle
();
$handle
->
addParam
(
"REQUEST_METHOD"
,
"POST"
);
$handle
->
addParam
(
"REQUEST_URI"
,
"/deepthought"
);
$handle
->
addParam
(
"TESTING"
,
"TRUE"
);
$handle
->
addParam
(
"TESTING"
,
"TRUE"
);
$handle
->
addBody
(
"What is the answer to life?"
);
if
((
my
$response
=
$handle
->
sendRequest
(
"127.0.0.1"
,
7777
,
10000
)))
{
print
"RESP[$response]\n"
;
}
else
{
print
"ERROR!\n"
;
}
libs/libscgi/perl/testserver.pl
0 → 100644
浏览文件 @
4b2e7fc1
use
FSSCGI
;
my
$handle
=
new
FSSCGI::
SCGIhandle
();
if
(
$handle
->
bind
(
"127.0.0.1"
,
7777
))
{
while
(
$handle
->
accept
())
{
print
"REQ: "
.
$handle
->
getBody
()
.
"\n\n"
;
$handle
->
respond
(
"W00t!!!!!!\n"
);
}
print
"DONE\n"
;
}
else
{
print
"FAIL\n"
;
}
libs/libscgi/src/include/scgi.h
浏览文件 @
4b2e7fc1
...
...
@@ -183,6 +183,7 @@ typedef void (*scgi_listen_callback_t)(scgi_socket_t server_sock, scgi_socket_t
SCGI_DECLARE
(
scgi_status_t
)
scgi_connect
(
scgi_handle_t
*
handle
,
const
char
*
host
,
scgi_port_t
port
,
uint32_t
timeout
);
SCGI_DECLARE
(
scgi_status_t
)
scgi_disconnect
(
scgi_handle_t
*
handle
);
SCGI_DECLARE
(
scgi_status_t
)
scgi_parse
(
scgi_socket_t
sock
,
scgi_handle_t
*
handle
);
SCGI_DECLARE
(
int
)
scgi_wait_sock
(
scgi_socket_t
sock
,
uint32_t
ms
,
scgi_poll_t
flags
);
SCGI_DECLARE
(
ssize_t
)
scgi_recv
(
scgi_handle_t
*
handle
,
unsigned
char
*
buf
,
size_t
buflen
);
SCGI_DECLARE
(
scgi_status_t
)
scgi_send_request
(
scgi_handle_t
*
handle
);
...
...
@@ -196,6 +197,10 @@ SCGI_DECLARE(const char *) scgi_get_param(scgi_handle_t *handle, const char *nam
SCGI_DECLARE
(
scgi_status_t
)
scgi_bind
(
const
char
*
host
,
scgi_port_t
port
,
scgi_socket_t
*
socketp
);
SCGI_DECLARE
(
scgi_status_t
)
scgi_accept
(
scgi_socket_t
server_sock
,
scgi_socket_t
*
client_sock_p
,
struct
sockaddr_in
*
echoClntAddr
);
#ifndef WIN32
#define closesocket(x) shutdown(x, 2); close(x)
#endif
#ifdef __cplusplus
}
#endif
/* defined(__cplusplus) */
...
...
libs/libscgi/src/include/scgi_oop.h
浏览文件 @
4b2e7fc1
...
...
@@ -45,8 +45,12 @@ extern "C" {
class
SCGIhandle
{
private
:
scgi_socket_t
server_sock
;
scgi_handle_t
handle
;
unsigned
char
buf
[
65536
];
char
*
data_buf
;
int
buflen
;
int
bufsize
;
public
:
SCGIhandle
();
virtual
~
SCGIhandle
();
...
...
@@ -55,8 +59,10 @@ class SCGIhandle {
int
disconnect
(
void
);
int
addParam
(
const
char
*
name
,
const
char
*
value
);
int
addBody
(
const
char
*
value
);
int
sendRequest
(
const
char
*
host
,
int
port
,
int
timeout
);
char
*
recv
();
char
*
getBody
();
char
*
getParam
(
const
char
*
name
);
char
*
sendRequest
(
const
char
*
host
,
int
port
,
int
timeout
);
int
respond
(
char
*
msg
);
int
bind
(
const
char
*
host
,
int
port
);
int
accept
(
void
);
};
...
...
libs/libscgi/src/scgi.c
浏览文件 @
4b2e7fc1
...
...
@@ -34,7 +34,6 @@
#include <scgi.h>
#ifndef WIN32
#define closesocket(x) shutdown(x, 2); close(x)
#include <fcntl.h>
#include <errno.h>
#else
...
...
@@ -385,11 +384,9 @@ SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle)
return
SCGI_FAIL
;
}
handle
->
destroyed
=
1
;
handle
->
connected
=
0
;
scgi_destroy_params
(
handle
);
scgi_safe_free
(
handle
->
body
);
if
(
!
handle
->
sock
)
{
abort
();
}
if
(
handle
->
sock
!=
SCGI_SOCK_INVALID
)
{
closesocket
(
handle
->
sock
);
...
...
@@ -397,6 +394,12 @@ SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle)
status
=
SCGI_SUCCESS
;
}
handle
->
destroyed
=
1
;
handle
->
connected
=
0
;
scgi_destroy_params
(
handle
);
scgi_safe_free
(
handle
->
body
);
return
status
;
}
...
...
@@ -577,9 +580,11 @@ SCGI_DECLARE(scgi_status_t) scgi_bind(const char *host, scgi_port_t port, scgi_s
end
:
if
(
server_sock
!=
SCGI_SOCK_INVALID
)
{
closesocket
(
server_sock
);
server_sock
=
SCGI_SOCK_INVALID
;
if
(
status
==
SCGI_FAIL
)
{
if
(
server_sock
!=
SCGI_SOCK_INVALID
)
{
closesocket
(
server_sock
);
server_sock
=
SCGI_SOCK_INVALID
;
}
}
else
{
*
socketp
=
server_sock
;
}
...
...
@@ -601,11 +606,11 @@ SCGI_DECLARE(scgi_status_t) scgi_accept(scgi_socket_t server_sock, scgi_socket_t
if
(
!
echoClntAddr
)
{
echoClntAddr
=
&
local_echoClntAddr
;
}
clntLen
=
sizeof
(
*
echoClntAddr
);
if
((
client_sock
=
accept
(
server_sock
,
(
struct
sockaddr
*
)
echoClntAddr
,
&
clntLen
))
==
SCGI_SOCK_INVALID
)
{
printf
(
"FRICK %s
\n
"
,
strerror
(
errno
));
status
=
SCGI_FAIL
;
}
else
{
*
client_sock_p
=
client_sock
;
...
...
@@ -652,10 +657,12 @@ SCGI_DECLARE(scgi_status_t) scgi_parse(scgi_socket_t sock, scgi_handle_t *handle
char
*
body
=
NULL
;
char
comma
=
0
;
memset
(
handle
,
0
,
sizeof
(
*
handle
));
handle
->
sock
=
sock
;
handle
->
connected
=
1
;
sock_setup
(
handle
);
for
(;;)
{
...
...
libs/libscgi/src/scgi_oop.cpp
浏览文件 @
4b2e7fc1
...
...
@@ -12,9 +12,12 @@ SCGIhandle::SCGIhandle(void)
SCGIhandle
::~
SCGIhandle
()
{
if
(
handle
.
connected
)
{
scgi_disconnect
(
&
handle
);
}
scgi_disconnect
(
&
handle
);
scgi_safe_free
(
data_buf
);
buflen
=
0
;
bufsize
=
0
;
}
int
SCGIhandle
::
socketDescriptor
()
...
...
@@ -29,11 +32,7 @@ int SCGIhandle::socketDescriptor()
int
SCGIhandle
::
disconnect
()
{
if
(
handle
.
connected
)
{
return
scgi_disconnect
(
&
handle
);
}
return
0
;
return
scgi_disconnect
(
&
handle
);
}
int
SCGIhandle
::
connected
()
...
...
@@ -51,11 +50,22 @@ int SCGIhandle::addBody(const char *value)
return
(
int
)
scgi_add_body
(
&
handle
,
value
);
}
char
*
SCGIhandle
::
getBody
()
{
return
handle
.
body
;
}
char
*
SCGIhandle
::
getParam
(
const
char
*
name
)
{
return
(
char
*
)
scgi_get_param
(
&
handle
,
name
);
}
int
SCGIhandle
::
sendRequest
(
const
char
*
host
,
int
port
,
int
timeout
)
char
*
SCGIhandle
::
sendRequest
(
const
char
*
host
,
int
port
,
int
timeout
)
{
ssize_t
len
;
if
(
!
host
)
{
return
-
2
;
return
0
;
}
if
(
timeout
<
1000
)
{
...
...
@@ -63,27 +73,30 @@ int SCGIhandle::sendRequest(const char *host, int port, int timeout)
}
if
(
scgi_connect
(
&
handle
,
host
,
port
,
timeout
)
==
SCGI_SUCCESS
)
{
return
(
int
)
scgi_send_request
(
&
handle
);
}
return
-
2
;
}
char
*
SCGIhandle
::
recv
(
void
)
{
ssize_t
len
=
scgi_recv
(
&
handle
,
buf
,
sizeof
(
buf
));
if
(
len
>
0
)
{
return
(
char
*
)
buf
;
if
(
scgi_send_request
(
&
handle
)
==
SCGI_SUCCESS
)
{
while
((
len
=
scgi_recv
(
&
handle
,
buf
,
sizeof
(
buf
)))
>
0
)
{
if
(
buflen
+
len
>
bufsize
)
{
bufsize
=
buflen
+
len
+
1024
;
void
*
tmp
=
realloc
(
data_buf
,
bufsize
);
assert
(
tmp
);
data_buf
=
(
char
*
)
tmp
;
*
(
data_buf
+
buflen
)
=
'\0'
;
}
snprintf
(
data_buf
+
buflen
,
bufsize
-
buflen
,
"%s"
,
buf
);
buflen
+=
len
;
}
return
data_buf
;
}
}
return
NULL
;
return
(
char
*
)
""
;
}
int
SCGIhandle
::
bind
(
const
char
*
host
,
int
port
)
{
return
(
int
)
scgi_bind
(
host
,
port
,
&
handle
.
sock
)
;
return
(
scgi_bind
(
host
,
port
,
&
server_sock
)
==
SCGI_SUCCESS
)
?
1
:
0
;
}
...
...
@@ -91,11 +104,24 @@ int SCGIhandle::accept(void)
{
scgi_socket_t
client_sock
;
if
(
scgi_accept
(
handle
.
sock
,
&
client_sock
,
NULL
)
==
SCGI_SUCCESS
)
{
return
(
int
)
client_sock
;
if
(
scgi_accept
(
server_sock
,
&
client_sock
,
NULL
)
==
SCGI_SUCCESS
)
{
if
(
scgi_parse
(
client_sock
,
&
handle
)
==
SCGI_SUCCESS
)
{
return
1
;
}
closesocket
(
client_sock
);
}
return
-
1
;
return
0
;
}
int
SCGIhandle
::
respond
(
char
*
msg
)
{
int
b
=
write
(
handle
.
sock
,
msg
,
strlen
(
msg
));
scgi_disconnect
(
&
handle
);
scgi_safe_free
(
data_buf
);
buflen
=
0
;
bufsize
=
0
;
return
b
;
}
libs/libscgi/testserver.c
浏览文件 @
4b2e7fc1
...
...
@@ -4,7 +4,7 @@ static void callback(scgi_socket_t server_sock, scgi_socket_t *client_sock, stru
{
scgi_handle_t
handle
=
{
0
};
if
(
scgi_parse
(
client_sock
,
&
handle
)
==
SCGI_SUCCESS
)
{
if
(
scgi_parse
(
*
client_sock
,
&
handle
)
==
SCGI_SUCCESS
)
{
scgi_param_t
*
pp
;
*
client_sock
=
SCGI_SOCK_INVALID
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论