C Gwan处理程序仅接受文件请求

C Gwan处理程序仅接受文件请求,c,g-wan,C,G Wan,使用以下代码时,处理程序将无法识别非文件请求(例如,请求必须包含www文件夹中的文件)。 对于所有其他请求,main甚至没有被调用,我不知道为什么会这样 int init(int argc, char *argv[]) { printf("init\n"); *(u32 *)get_env(argv, US_HANDLER_STATES) = (1L << HDL_AFTER_ACCEPT) | (1L << HDL_AFTER_READ) | (1L &

使用以下代码时,处理程序将无法识别非文件请求(例如,请求必须包含www文件夹中的文件)。 对于所有其他请求,main甚至没有被调用,我不知道为什么会这样

int init(int argc, char *argv[])

{
   printf("init\n");

   *(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("clean\n");
}

int main(int argc, char *argv[])
{
   printf("%s\n", (char *)get_env(argv, REQUEST));

   return 255;
}
intinit(intargc,char*argv[]
{
printf(“init\n”);

*(u32*)get_env(argv,US_HANDLER_STATES)=(1L处理程序获取任何关于文件或其他方面的请求,无论是否有效

您的处理程序不正确。因为您在进行
HTTP
HTML
解析之前请求通知:

   *(u32*)get_env(argv, US_HANDLER_STATES) = 
      (1L << HDL_AFTER_ACCEPT) 
    | (1L << HDL_AFTER_READ) 
    | (1L << HDL_BEFORE_WRITE);

您在上面发布的代码每次都会崩溃,因为HTTP
REQUEST
值为
NULL
(目前不可用)当连接被
接受
,或者请求被
读取

时,您使用的是哪个版本的G-wan?您的开发环境如何?最新版本的G-wan已知与许多发行版不兼容。如果是这样,那么您最好使用旧的G-wan 3.3,或者尝试匹配G-wan团队的开发环境(我相信是Ubuntu10.04)我不好,我正在运行Ubuntu12.10和glibc版本2.15。
root@desktop-Ubuntu:~#/lib/x86_64-linux-gnu/libc.so.6 gnu C库(Ubuntu EGLIBC 2.15-0ubuntu20)稳定发行版2.15,由罗兰·麦格拉斯等人编写,由gnu CC版本4.6.3 20120918(预发行版)编译。于2012年10月4日在Linux 3.5.4系统上编译。可用扩展:Michael Glady的crypt插件版本2.1和其他人Simon Josefsson的GNU Libidn本地POSIX线程库Ulrich Drepper等人的BIND-8.2.3-T5B libc ABIs:UNIQUE IFUNC
   const char *req = (char*)get_env(argv, REQUEST);
   printf("%s\n", req ? req : "not parsed yet");