- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的脚本:
#include "gwan.h" // G-WAN exported functions
#include <string.h> // strstr()
int init(int argc, char *argv[])
{
u32 *states = (u32*)get_env(argv, US_HANDLER_STATES);
*states = 1 << HDL_AFTER_READ;
return 0;
}
void clean(int argc, char *argv[])
{}
int main(int argc, char *argv[])
{
if((long)argv[0] == HDL_AFTER_READ)
{
xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
if(strstr(read_xbuf->ptr, "GET / HTTP/1.1"))
{
xbuf_repl(read_xbuf, "GET / HTTP/1.1", "GET /?index HTTP/1.1");
}
else
{
if(strstr(read_xbuf->ptr, ".c HTTP/1.1"))
{
int *pHTTP_status = (int*)get_env(argv, HTTP_CODE);
if(pHTTP_status)
*pHTTP_status = 404;
return 255;
}
xbuf_repl(read_xbuf, "GET /", "GET /?");
}
}
return(255);
}
正如您可能理解的那样,我正在尝试将主页重定向到动态文件“hello.c”。我还将每个请求重定向到动态目录(无需使用字符“?”),同时防止在 url 中使用扩展名“.c”。
此脚本部分有效,但显然会导致内存分配问题。您有什么解决方案可以提出吗?
最佳答案
如果您担心性能,请不要使用 strstr。它将在整个请求中搜索匹配项。
根据您的脚本,您希望所有请求都是 GET,因此最好使用 strncmp,因为您只比较前 6 个字符。
int main(int argc, char *argv[])
{
xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
if(strncmp(read_xbuf->ptr, "GET / ", 6) == 0)
{
xbuf_repl(read_xbuf, " / ", " /?index ");
}
else
{
int pos = 5; // Start checking after '/' in "GET /"
while(pos < 20) // Only check first 15 characters
{ // Adjust depend on longest servlet name
if(read_xbuf->ptr[pos] == '.' && read_xbuf->ptr[pos+1] == 'c') // If request contains '.' return 404
{
int *pHTTP_status = (int*)get_env(argv, HTTP_CODE);
if(pHTTP_status)
*pHTTP_status = 404;
return 255;
}
}
xbuf_repl(read_xbuf, "GET /", "GET /?");
}
return(255);
}
再次检查“.c”。您只想检查前 N 个字符。
如果你担心加'?'引起的内存分配问题对于您需要设计您的 servlet 名称的每个请求,以便可以进行就地替换。这是一个链接,其中包含有关如何实现就地替换以获得更好性能的示例。
我没有测试过上面的代码,所以它可能不起作用,但至少你会知道如何去做。此外,该脚本不处理流水线请求。
关于c - G-WAN handler重写方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398849/
无线广域网(WWAN)领域的发展让企业重新开始考虑该技术。展望未来,WWAN(特别是WWAN中的5G)有望成为软件定义WAN或SD-WAN领域改变游戏规则的选项。 企业部署WWAN以改善站点故障恢
这是我的脚本: #include "gwan.h" // G-WAN exported functions #include // strstr() int init(int argc, char
我遇到了 PDF 文件在从一个 WAN 位置复制到下一个位置时损坏的问题。 我有一个 PowerShell 脚本(下面的代码),它每晚运行以通过 Windows 任务计划程序(有时是两个)从佛罗里达州
我用java语言创建了一个客户端服务器程序,其中包含serversocket和socket类,以及用于发送和接收数据的datainputstream和dataoutputstream。 但问题是,当我
如何阻止 WAN 访问 SQLyog 中的特定数据库?我能够授予对特定数据库的完全访问权限,但无法阻止它们。我有一个在内部服务器上运行并访问同一服务器上的 MySQL 的 Web 应用程序。我已经使用
我正在寻找一种通过网络(某种恶魔)提供日志文件的有效方法。每个数据包都是来自日志文件的多行,以便它们可以从另一端进行处理。服务器独立于客户端很重要,这意味着它应该能够“保存”客户端连接时要发送的数据包
在Ubuntu 12.04 LTS下使用gwan_linux64-bit.tar.bz2解压运行gwan 然后将 wrk 指向它(使用空文件 null.html) wrk --timeout 10 -
简单来说,我有一个应用程序,其中的数据旨在通过互联网在两台服务器之间流动。理想情况下,我想测试软件在什么时候停止运行。在什么下限(带宽、延迟、丢包)下停止工作以测试软件的可靠性。 我想我会做的是: 设
解决方案: int session = (int)get_env(argv, SESSION_ID); 获取连接的唯一标识符US_VHOST_DATA (vhost) or US_HANDLER_DA
WAN 优化中使用了哪些技术/算法?我正在寻找可以提供代码示例支持的良好理论的引用,我查看了 Steelhead来自 Riverbed 的手册,我发现以下主要技术用于: SDR(可扩展数据引用):将
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我正在尝试为 RabbitMQ 的两个数据中心之间提供灾难恢复。在主 DC 出现故障之前,辅助数据中心处于被动状态。 队列联合是不合适的,因为在辅助 DC 中的使用者激活之前它不会移动消息。除非主 D
我正在使用 Shibby FW 的 Tomato 配置我的家庭路由器 ASUS N18U。我想在上面设置一个家庭网络服务器 NGINX。我知道,这并不理想。我遇到的唯一问题是我无法从 Wan 访问服务
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我正在使用 Shibby FW 的 Tomato 配置我的家庭路由器 ASUS N18U。我想在上面设置一个家庭网络服务器 NGINX。我知道,这并不理想。我遇到的唯一问题是我无法从 Wan 访问服务
我正在考虑托管一些小型静态网站,并且一直在寻找一些替代方案,包括 G-WAN。目前,我只是想在选择服务器之前了解每台服务器是否适合我的需求。 G-WAN 似乎完全符合我的要求,尽管我在服务器启动后更新
我的 Hazelcast WAN 设置包含三个 WAN - 伦敦、纽约和澳大利亚 哪里, 伦敦有 1.1.1.1 和 1.1.1.2 纽约有 1.1.1.3 和 1.1.1.4 澳大利亚有 1.1.1
我想将两部手机连接在一起以实现某种 P2P 风格的连接,当然要这样做,我需要手机能够相互传达其 IP 地址。我一直在想很多关于如何做到这一点的想法,我意识到的一件事是电话号码是电话的唯一标识符,因此我
不久前,我 [在 Google 的帮助下] 写了一个小的 WOL 脚本来打开我网络中的计算机。这是脚本: exec /usr/bin/python -x "$0" "$@" # node_lst =
默认情况下,G-WAN 从 HTML 中去除空格文件以最小化文件。允许 定义的预格式化文本的最佳方式是什么?标签才能通过? @理查德希思有趣——我正在使用带有 的 G-Wan 的原始安装。像这样开
我是一名优秀的程序员,十分优秀!