C语言 Gwan 处理程序只接受文件请求



使用以下代码时,处理程序将无法识别非文件请求(例如,请求必须包含 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 REQUESTNULL(尚不可用(。

相关内容

  • 没有找到相关文章

最新更新