【问题标题】:Why get_env(US_VHOST_DATA) is NULL on first invocation of main() in handlers/main.c为什么 get_env(US_VHOST_DATA) 在 handlers/main.c 中第一次调用 main() 时为 NULL
【发布时间】:2016-08-27 18:12:41
【问题描述】:

我正在使用 G-Wan v4.12.31。

有人知道为什么 get_env(US_VHOST_DATA) 在 handlers/main.c 中第一次调用 main() 时返回 NULL 吗?

int init(int argc, char *argv[])
{
  u32 *states = (u32 *)get_env(argv, US_HANDLER_STATES);
  *states = (1 << HDL_AFTER_READ);
  return 0;
}

int main(int argc, char *argv[])
{
  void **vhost = (void **)get_env(argv, US_VHOST_DATA);
  printf(%p\n", vhost); //NULL first time, non-NULL all other times
  return 255;
}

【问题讨论】:

    标签: parsing environment-variables virtualhost g-wan


    【解决方案1】:

    get_env(US_VHOST_DATA) 调用返回虚拟主机信息。

    只要client request 不是parsed,就没有host information 可用于G-WAN。

    这就是为什么在 HDL_AFTER_PARSE 处理程序状态之前无法返回有意义的主机以及 G-WAN 返回 NULL 的原因。

    【讨论】:

    • 吉尔,谢谢。我想我应该在我的情况下使用 US_HANDLER_DATA。
    猜你喜欢
    • 2016-12-08
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多