82 lines
3.3 KiB
Markdown
82 lines
3.3 KiB
Markdown
# 1. Goahead开发文档
|
||
|
||
## 1.1. Goahead版本
|
||
|
||
5.2.0
|
||
|
||
## 1.2. 编译脚本
|
||
|
||
```
|
||
# build goahead before make libgo.a
|
||
add_custom_command(
|
||
OUTPUT ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/Makefile
|
||
COMMAND echo "tar zxvf goahead-5.2.0.tar.gz"
|
||
COMMAND tar zxvf goahead-5.2.0.tar.gz // 解压源码包
|
||
WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/
|
||
)
|
||
add_custom_command(
|
||
OUTPUT ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
|
||
DEPENDS ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/Makefile
|
||
COMMAND make CC=${CMAKE_C_COMPILER} ARCH=${SET_ARCH} PROFILE=${LIB_TYPE}
|
||
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgo.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a // 拷贝静态库到output目录
|
||
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libmbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libmbedtls.a // 拷贝静态库到output目录
|
||
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgoahead-mbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgoahead-mbedtls.a // 拷贝静态库到output目录
|
||
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.crt ${PLATFORM_PATH}/cmake-shell/ // 拷贝self.crt,self.key两个到运行目录;
|
||
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.key ${PLATFORM_PATH}/cmake-shell/ // 拷贝self.crt,self.key两个到运行目录;
|
||
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/route.txt ${GOAHEAD_CONFIG_FILE_PATH} // 配置文件两个:route.txt,auth.txt;
|
||
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/auth.txt ${GOAHEAD_CONFIG_FILE_PATH} // 配置文件两个:route.txt,auth.txt;
|
||
WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead
|
||
)
|
||
add_custom_target(
|
||
libgo.a // 创建goahead目标
|
||
DEPENDS ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
|
||
)
|
||
```
|
||
|
||
## 1.3. 环境配置
|
||
|
||
1. 拷贝self.crt,self.key两个到运行目录;
|
||
2. 配置文件两个:route.txt,auth.txt;
|
||
|
||
## 1.4. 代码整改
|
||
|
||
### 1.4.1. web服务安全退出
|
||
|
||
   由于官方源码是不超时阻塞,为了方便自动化测试,把官方源码的不超时阻塞改成超时阻塞。
|
||
```
|
||
PUBLIC void websServiceEvents(int *finished)
|
||
{
|
||
int delay, nextEvent;
|
||
|
||
if (finished) {
|
||
*finished = 0;
|
||
}
|
||
// ===================== added by xiao ===================== //
|
||
// delay = 0; // open source code
|
||
#define TIME_OUT_MS 1000
|
||
delay = TIME_OUT_MS; // modifed by xiao, time out 1000 ms
|
||
// ===================== added by xiao end ===================== //
|
||
while (!finished || !*finished) {
|
||
if (socketSelect(-1, delay)) {
|
||
socketProcess();
|
||
}
|
||
#if ME_GOAHEAD_CGI
|
||
delay = websCgiPoll();
|
||
#else
|
||
delay = MAXINT;
|
||
#endif
|
||
nextEvent = websRunEvents();
|
||
delay = min(delay, nextEvent);
|
||
// ===================== added by xiao ===================== //
|
||
delay = (delay <= 0 || delay >= TIME_OUT_MS) ? TIME_OUT_MS : delay;
|
||
// ===================== added by xiao end ===================== //
|
||
}
|
||
}
|
||
```
|
||
|
||
### 1.4.2. HTTP POST 文件限制
|
||
|
||
   源码限制POST文件大小太小,这里修改为32M。
|
||
|
||
```
|
||
``` |