使用以下代码时,处理程序将无法识别非文件请求(例如,请求必须包含 www 文件夹中的文件(。对于所有其他请求,甚至没有调用 main,我不知道为什么会这样。
int init(int argc, char *argv[])
{
printf("initn");
*(u32 *)get_env(argv, US_HANDLER_STATES) = (1L << HDL_AFTER_ACCEPT) | (1L << HDL_AFTER_READ) | (1L << HDL_BEFORE_WRITE);
return 0;
}
void clean(int argc, char *argv[])
{
printf("cleann");
}
int main(int argc, char *argv[])
{
printf("%sn", (char *)get_env(argv, REQUEST));
return 255;
}
请求:127.0.0.1/index.html
印刷品: GET /index.html
请求:127.0.0.1/favicon.ico
打印: GET /favicon.ico
请求:127.0.0.1/index
印刷品:N/A
感谢您的任何帮助。
获取有关文件或其他方面的任何请求,无论是否有效。
您的处理程序不正确。由于您在HTTP
之前询问通知并HTML
解析发生:
*(u32*)get_env(argv, US_HANDLER_STATES) =
(1L << HDL_AFTER_ACCEPT)
| (1L << HDL_AFTER_READ)
| (1L << HDL_BEFORE_WRITE);
。在显示REQUEST
之前,您应该绝对检查printf()
是否可用:
const char *req = (char*)get_env(argv, REQUEST);
printf("%sn", req ? req : "not parsed yet");
您上面发布的代码每次都会崩溃,因为在连接ACCEPTED
或请求READ
时 HTTP REQUEST
值NULL
(尚不可用(。