summaryrefslogtreecommitdiff
path: root/src/muniad.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2012-02-24 08:22:37 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2012-02-24 08:22:37 +0100
commit3ca0e592183839f339d47723ca51be1ca2bbc7ec (patch)
tree9a98615b68280210e0753d55fea2ce0e86347fc4 /src/muniad.cc
parentcce86546822ebbd4d2f1fb4f9944c9f8f7d5532f (diff)
Fix potential segafult in dump_handshake_info. Modularise code a bit. Modularise the code a bit.
Diffstat (limited to 'src/muniad.cc')
-rw-r--r--src/muniad.cc124
1 files changed, 7 insertions, 117 deletions
diff --git a/src/muniad.cc b/src/muniad.cc
index 0277099..8181f68 100644
--- a/src/muniad.cc
+++ b/src/muniad.cc
@@ -35,80 +35,14 @@
#include <libwebsockets.h>
+#include "http.h"
+#include "task.h"
+
#define LWS_NO_FORK
static int close_testing;
/*
- * This demo server shows how to use libwebsockets for one or more
- * websocket protocols in the same server
- *
- * It defines the following websocket protocols:
- * lws-mirror-protocol: copies any received packet to every connection also
- * using this protocol, including the sender
- */
-
-enum demo_protocols {
- /* always first */
- PROTOCOL_HTTP = 0,
- PROTOCOL_LWS_MIRROR,
- /* always last */
- DEMO_PROTOCOL_COUNT
-};
-
-#define LOCAL_RESOURCE_PATH "."
-
-/* this protocol server (always the first one) just knows how to do HTTP */
-
-static int callback_http(struct libwebsocket_context * context,
- struct libwebsocket *wsi,
- enum libwebsocket_callback_reasons reason, void *user,
- void *in, size_t len)
-{
- char client_name[128];
- char client_ip[128];
-
- switch (reason) {
- case LWS_CALLBACK_HTTP:
- fprintf(stderr, "serving HTTP URI %s\n", (char *)in);
-
-// add favicon later
- if(in && strcmp((const char *)in, "/favicon.ico") == 0) {
- if(libwebsockets_serve_http_file(wsi, LOCAL_RESOURCE_PATH"/favicon.ico", "image/x-icon"))
- fprintf(stderr, "Failed to send favicon\n");
- break;
- }
-
-
- /* send the script... when it runs it'll start websockets */
-// if (libwebsockets_serve_http_file(wsi, LOCAL_RESOURCE_PATH"/test.html", "text/html"))
- if (libwebsockets_serve_http_file(wsi, LOCAL_RESOURCE_PATH"/munia.html", "text/html"))
- fprintf(stderr, "Failed to send HTTP file\n");
- break;
-
- /*
- * callback for confirming to continue with client IP appear in
- * protocol 0 callback since no websocket protocol has been agreed
- * yet. You can just ignore this if you won't filter on client IP
- * since the default uhandled callback return is 0 meaning let the
- * connection continue.
- */
-
- case LWS_CALLBACK_FILTER_NETWORK_CONNECTION:
- libwebsockets_get_peer_addresses((int)(long)user, client_name, sizeof(client_name), client_ip, sizeof(client_ip));
- fprintf(stderr, "Received network connect from %s (%s)\n", client_name, client_ip);
- /* if we returned non-zero from here, we kill the connection */
- break;
-
- default:
- break;
- }
-
- return 0;
-}
-
-
-/*
* this is just an example of parsing handshake headers, you don't need this
* in your code unless you will filter allowing connections by the header
* content
@@ -145,8 +79,10 @@ static void dump_handshake_info(struct lws_tokens *lwst)
};
for (n = 0; n < WSI_TOKEN_COUNT; n++) {
- if (lwst[n].token == NULL) continue;
- fprintf(stderr, " %s = %s\n", token_names[n], lwst[n].token);
+ if (lwst[n].token == NULL || lwst[n].token_len == 0) continue;
+ fprintf(stderr, " %s = ", token_names[n]);
+ if(fwrite(lwst[n].token, 1, lwst[n].token_len, stderr)) {}
+ fprintf(stderr, "\n");
}
}
@@ -165,53 +101,7 @@ struct a_message {
size_t len;
};
-#include <string>
-#include <map>
-
-typedef int boxid_t;
-class Box {
-public:
- Box(std::string data) {}
- Box() {}
-
- boxid_t id;
- std::string title;
- std::string description;
- int x, y;
-};
-
-std::map<boxid_t, Box> boxes;
-
-/*
-Protocol:
-
-Server -> client:
- update [id] [title] [description];
- move [id] [x] [y];
- add [id] [title] [description] [x] [y];
- del [id]
-
-Client -> server:
- update [id] [title] [description];
- move [id] [x] [y];
- add [title] [description] [x] [y];
- del [id]
-
-title and description are " encapsulated utf-8 string with " escaped with a backslash.
-x and y are integers as strings
-id are an integer as a string
- */
-
-struct task {
- int x, y;
- int id;
- std::string title;
- std::string desc;
-};
typedef std::list<struct libwebsocket*> ClientList;
-typedef std::list<struct task> TaskList;
-
-static TaskList tasklist;
static struct a_message ringbuffer[MAX_MESSAGE_QUEUE];
static int ringbuffer_head;