如何使G-WAN servlet静默关闭其连接而不发送任何回复

时间:2012-11-08 03:06:36

标签: ddos g-wan

如何让gwan不回复某些请求,即在没有构建和发送回复的情况下使servlet静默关闭?

减少服务器端的出站带宽非常有用。

仅收集数据时,无需向客户回复任何内容。

2 个答案:

答案 0 :(得分:0)

你可以使用gwan connection handler

来做到这一点

我认为这是你需要抓住处理程序的事件。由于您希望servlet运行,然后关闭连接。

HDL_BEFORE_WRITE, // after a reply was built, but before it is sent

以下是connection handler的示例代码。您仍然需要添加过滤器。该代码将在构建回复后关闭所有请求。

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

int main(int argc, char *argv[])
{
    long state = (long)argv[0];
    if(state == HDL_BEFORE_WRITE)
    {
        return 0; // Close connection
    }
    return(255); // continue G-WAN's default execution path
}

答案 1 :(得分:0)

您还可以通过执行类似(未经测试)的操作来关闭servlet的连接:

#include <sys/socket.h>

char buf[1024];
int s = (int)get_env(argv, CLIENT_SOCKET);
shutdown(s, SHUT_WR);
while(read(s, buf, sizeof(buf)) > 0);
close(s);
return 500;

然后返回类似于500的内容,这样您就不必建立回复。