]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Support for echo protocol, to show how multiprotocol support works.
authorBen Laurie <ben@apache.org>
Fri, 23 Jul 1999 18:52:29 +0000 (18:52 +0000)
committerBen Laurie <ben@apache.org>
Fri, 23 Jul 1999 18:52:29 +0000 (18:52 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@83489 13f79535-47bb-0310-9956-ffa450edef68

modules/echo/mod_echo.c [new file with mode: 0644]

diff --git a/modules/echo/mod_echo.c b/modules/echo/mod_echo.c
new file mode 100644 (file)
index 0000000..210cfa7
--- /dev/null
@@ -0,0 +1,82 @@
+#include "httpd.h"
+#include "http_config.h"
+#include "http_connection.h"
+
+API_VAR_EXPORT module echo_module;
+
+typedef struct
+    {
+    int bEnabled;
+    } EchoConfig;
+
+static void *create_echo_server_config(pool *p,server_rec *s)
+    {
+    EchoConfig *pConfig=ap_pcalloc(p,sizeof *pConfig);
+
+    pConfig->bEnabled=0;
+
+    return pConfig;
+    }
+
+static const char *echo_on(cmd_parms *cmd, void *dummy, char *arg)
+    {
+    EchoConfig *pConfig=ap_get_module_config(cmd->server->module_config,
+                                            &echo_module);
+    pConfig->bEnabled=1;
+
+    return NULL;
+    }
+
+static int process_echo_connection(conn_rec *c)
+    {
+    char buf[1024];
+    EchoConfig *pConfig=ap_get_module_config(c->base_server->module_config,
+                                            &echo_module);
+
+    if(!pConfig->bEnabled)
+       return DECLINED;
+
+    for( ; ; )
+       {
+       int w;
+       int r=ap_bread(c->client,buf,sizeof buf);
+       if(r <= 0)
+           break;
+       w=ap_bwrite(c->client,buf,r);
+       if(w != r)
+           break;
+       ap_bflush(c->client);
+       }
+    return OK;
+    }
+
+static const command_rec echo_cmds[] = {
+{ "ProtocolEcho", echo_on, NULL, RSRC_CONF, RAW_ARGS,
+  "Run an echo server on this host" },
+{ NULL }
+};
+
+static void register_hooks()
+    {
+    ap_hook_process_connection(process_echo_connection,NULL,NULL,HOOK_MIDDLE);
+    }
+
+API_VAR_EXPORT module echo_module = {
+    STANDARD20_MODULE_STUFF,
+    NULL,                      /* pre_command_line */
+    NULL,                      /* pre_config */
+    NULL,                      /* post_config */
+    NULL,                      /* open_logs */
+    NULL,                      /* child_init */
+    NULL,                      /* create per-directory config structure */
+    NULL,                      /* merge per-directory config structures */
+    create_echo_server_config, /* create per-server config structure */
+    NULL,                      /* merge per-server config structures */
+    echo_cmds,                 /* command table */
+    NULL,                      /* handlers */
+    NULL,                      /* check auth */
+    NULL,                      /* check access */
+    NULL,                      /* type_checker */
+    NULL,                      /* pre-run fixups */
+    register_hooks             /* register hooks */
+};