diff --git a/lib/base64-decode.c b/lib/base64-decode.c
index baaccbb5fcebcbc5f5ce208560845b93b3e4b322..bb074fca9ac96d776da7552a18bb96b20d7f1e6b 100644
--- a/lib/base64-decode.c
+++ b/lib/base64-decode.c
@@ -151,8 +151,8 @@ int
 lws_b64_selftest(void)
 {
 	char buf[64];
-	int n;
-	int test;
+	unsigned int n;
+	unsigned int test;
 	static const char * const plaintext[] = {
 		"sanity check base 64"
 	};
diff --git a/lib/context.c b/lib/context.c
index 98c9ea208b689c607069a93c547a5343971c48d4..3159b1fb24799f1f70d5be058adacf3edd4dea67 100644
--- a/lib/context.c
+++ b/lib/context.c
@@ -1,7 +1,7 @@
 /*
  * libwebsockets - small server side websockets and web server implementation
  *
- * Copyright (C) 2010-2014 Andy Green <andy@warmcat.com>
+ * Copyright (C) 2010-2015 Andy Green <andy@warmcat.com>
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
diff --git a/lib/header.c b/lib/header.c
index 8d83f5cbc762b6b4256ef9126d1638b6758bb1f4..56c8fc05fe753204711b29eab9e6dfb23607be2c 100644
--- a/lib/header.c
+++ b/lib/header.c
@@ -40,6 +40,9 @@ int lws_add_http_header_by_name(struct libwebsocket_context *context,
 #ifdef LWS_USE_HTTP2
 	if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING)
 		return lws_add_http2_header_by_name(context, wsi, name, value, length, p, end);
+#else
+	(void)wsi;
+	(void)context;
 #endif
 	if (name) {
 		while (*p < end && *name)
@@ -63,9 +66,12 @@ int lws_finalize_http_header(struct libwebsocket_context *context,
 			    unsigned char **p,
 			    unsigned char *end)
 {
+	(void)context;
 #ifdef LWS_USE_HTTP2
 	if (wsi->mode == LWS_CONNMODE_HTTP2_SERVING)
 		return 0;
+#else
+	(void)wsi;
 #endif
 	if ((long)(end - *p) < 3)
 		return 1;
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index 792d1485fe3c98dc5565a020d6e746293934d337..28f2c61823441a0e1550d3e98157620085945cab 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -845,6 +845,7 @@ lws_is_ssl(struct libwebsocket *wsi)
 #ifdef LWS_OPENSSL_SUPPORT
 	return wsi->use_ssl;
 #else
+	(void)wsi;
 	return 0;
 #endif
 }
@@ -898,6 +899,7 @@ lws_get_peer_write_allowance(struct libwebsocket *wsi)
 	
 	return wsi->u.http2.tx_credit;
 #else
+	(void)wsi;
 	return -1;
 #endif
 }
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index 3e1db93400d4627a70d53b96ee9c40b8716c725e..dfa40c753d9d08cc75389e1effd61c91a3b9eb02 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -25,6 +25,16 @@
 #ifdef __cplusplus
 #include <cstddef>
 #include <cstdarg>
+#ifdef MBED_OPERATORS
+#include "mbed-drivers/mbed.h"
+#include "sal-iface-eth/EthernetInterface.h"
+#include "sockets/TCPListener.h"
+#include "sal-stack-lwip/lwipv4_init.h"
+#define LWS_POSIX 0
+#else
+#define LWS_POSIX 1
+#endif
+
 extern "C" {
 #else
 #include <stdarg.h>
@@ -155,13 +165,13 @@ LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
 
 #else /* no debug */
 
-#define lwsl_info(...)
-#define lwsl_debug(...)
-#define lwsl_parser(...)
-#define lwsl_header(...)
-#define lwsl_ext(...)
-#define lwsl_client(...)
-#define lwsl_latency(...)
+#define lwsl_info(...) {}
+#define lwsl_debug(...) {}
+#define lwsl_parser(...) {}
+#define lwsl_header(...) {}
+#define lwsl_ext(...) {}
+#define lwsl_client(...) {}
+#define lwsl_latency(...) {}
 #define lwsl_hexdump(a, b)
 
 #endif
@@ -1262,6 +1272,14 @@ libwebsocket_set_timeout(struct libwebsocket *wsi,
 // they recommend that structures larger than 16 bytes be aligned to 16-byte
 // boundaries.
 // 
+
+#if !defined(LWS_SIZEOFPTR)
+#define LWS_SIZEOFPTR (sizeof (void *))
+#endif
+#if !defined(u_int64_t)
+#define u_int64_t unsigned long long
+#endif
+
 #if __x86_64__
 #define _LWS_PAD_SIZE 16       // Intel recommended for best performance.
 #else
diff --git a/lib/output.c b/lib/output.c
index 81d1d5c11b6e198e3448dc3a0b0184f1b47b0dfb..059fbaa064a2f4cf971f853a52999704a84e3c5e 100644
--- a/lib/output.c
+++ b/lib/output.c
@@ -128,7 +128,7 @@ int lws_issue_raw(struct libwebsocket *wsi, unsigned char *buf, size_t len)
 	 */
 	lws_latency_pre(context, wsi);
 	n = lws_ssl_capable_write(wsi, buf, len);
-	lws_latency(context, wsi, "send lws_issue_raw", n, n == len);
+	lws_latency(context, wsi, "send lws_issue_raw", n, (unsigned int)n == len);
 
 	switch (n) {
 	case LWS_SSL_CAPABLE_ERROR:
@@ -167,7 +167,7 @@ handle_truncated_send:
 		return n;
 	}
 
-	if (n == real_len)
+	if ((unsigned int)n == real_len)
 		/* what we just sent went out cleanly */
 		return n;
 
@@ -498,7 +498,7 @@ send_raw:
 	if (n <= 0)
 		return n;
 
-	if (n == len + pre + post) {
+	if (n == (int)len + pre + post) {
 		/* everything in the buffer was handled (or rebuffered...) */
 		wsi->u.ws.inside_frame = 0;
 		return orig_len;
@@ -583,6 +583,8 @@ lws_ssl_capable_read_no_ssl(struct libwebsocket_context *context,
 {
 	int n;
 
+	(void)context;
+	
 	n = recv(wsi->sock, (char *)buf, len, 0);
 	if (n >= 0)
 		return n;
@@ -620,5 +622,6 @@ lws_ssl_capable_write_no_ssl(struct libwebsocket *wsi, unsigned char *buf, int l
 LWS_VISIBLE int
 lws_ssl_pending_no_ssl(struct libwebsocket *wsi)
 {
+	(void)wsi;
 	return 0;
 }
diff --git a/lib/parsers.c b/lib/parsers.c
index b660b38ef5a9fd043dbc94888fde965e06d1162c..2330a2a64c18cecad503e896ac91e122eb5400aa 100644
--- a/lib/parsers.c
+++ b/lib/parsers.c
@@ -210,7 +210,7 @@ int libwebsocket_parse(
 		WSI_TOKEN_PATCH_URI,
 		WSI_TOKEN_DELETE_URI,
 	};
-	int n, m;
+	unsigned int n, m;
 
 	switch (wsi->u.hdr.parser_state) {
 	default:
@@ -387,7 +387,7 @@ check_eol:
 		}
 
 		n = issue_char(wsi, c);
-		if (n < 0)
+		if ((int)n < 0)
 			return -1;
 		if (n > 0)
 			wsi->u.hdr.parser_state = WSI_TOKEN_SKIPPING;
diff --git a/lib/pollfd.c b/lib/pollfd.c
index 04e2e4d3dc1a8707c61b01df581b3ae51e0c03df..80cb2eaa8cc45f8f6d944d449f88ea0b79e34a7c 100644
--- a/lib/pollfd.c
+++ b/lib/pollfd.c
@@ -32,7 +32,7 @@ insert_wsi_socket_into_fds(struct libwebsocket_context *context,
 		return 1;
 	}
 
-#ifndef _WIN32
+#if !defined(_WIN32) && !defined(MBED_OPERATORS)
 	if (wsi->sock >= context->max_fds) {
 		lwsl_err("Socket fd %d is too high (%d)\n",
 						wsi->sock, context->max_fds);
diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h
index ece8380e9112ff8a1006aa670e0ced3e228eec9f..57578f2cdbec6bddd886415068a181f9e18cbda7 100644
--- a/lib/private-libwebsockets.h
+++ b/lib/private-libwebsockets.h
@@ -149,9 +149,15 @@
 #define compatible_file_read(amount, fd, buf, len) \
 		amount = read(fd, buf, len);
 #define lws_set_blocking_send(wsi)
+
+#ifdef MBED_OPERATORS
+#define lws_socket_is_valid(x) ((x) != NULL)
+#define LWS_SOCK_INVALID (NULL)
+#else
 #define lws_socket_is_valid(x) (x >= 0)
 #define LWS_SOCK_INVALID (-1)
 #endif
+#endif
 
 #ifndef LWS_HAVE_BZERO
 #ifndef bzero
@@ -619,8 +625,8 @@ struct _lws_http_mode_related {
 
 	enum http_version request_version;
 	enum http_connection_type connection_type;
-	int content_length;
-	int content_remain;
+	unsigned int content_length;
+	unsigned int content_remain;
 };
 
 
@@ -790,7 +796,7 @@ struct _lws_header_related {
 
 struct _lws_websocket_related {
 	char *rx_user_buffer;
-	int rx_user_buffer_head;
+	unsigned int rx_user_buffer_head;
 	unsigned char frame_masking_nonce_04[4];
 	unsigned char frame_mask_index;
 	size_t rx_packet_length;
@@ -901,9 +907,9 @@ lws_rxflow_cache(struct libwebsocket *wsi, unsigned char *buf, int n, int len);
 #ifndef LWS_LATENCY
 static inline void lws_latency(struct libwebsocket_context *context,
 		struct libwebsocket *wsi, const char *action,
-					 int ret, int completion) { do { } while (0); }
+		int ret, int completion) { do { (void)context; (void)wsi; (void)action; (void)ret; (void)completion; } while (0); }
 static inline void lws_latency_pre(struct libwebsocket_context *context,
-					struct libwebsocket *wsi) { do { } while (0); }
+					struct libwebsocket *wsi) { do { (void)context; (void)wsi; } while (0); }
 #else
 #define lws_latency_pre(_context, _wsi) lws_latency(_context, _wsi, NULL, 0, 0)
 extern void
@@ -928,7 +934,7 @@ lws_http_action(struct libwebsocket_context *context, struct libwebsocket *wsi);
 LWS_EXTERN int
 lws_b64_selftest(void);
 
-#ifdef _WIN32
+#if defined(_WIN32) || defined(MBED_OPERATORS)
 LWS_EXTERN struct libwebsocket *
 wsi_from_fd(struct libwebsocket_context *context, lws_sockfd_type fd);
 
@@ -1111,9 +1117,10 @@ LWS_EXTERN int get_daemonize_pid();
 #define get_daemonize_pid() (0)
 #endif
 
+#if !defined(MBED_OPERATORS)
 LWS_EXTERN int interface_to_sa(struct libwebsocket_context *context,
 		const char *ifname, struct sockaddr_in *addr, size_t addrlen);
-
+#endif
 LWS_EXTERN void lwsl_emit_stderr(int level, const char *line);
 
 #ifdef _WIN32
diff --git a/lib/server.c b/lib/server.c
index 14acf2e7b8b7de1b350bfd2c53348519184480d3..38e19259f598d88202419ba127e7a81efa9ef3ae 100644
--- a/lib/server.c
+++ b/lib/server.c
@@ -27,15 +27,17 @@ int lws_context_init_server(struct lws_context_creation_info *info,
 {
 	int n;
 	lws_sockfd_type sockfd;
+#if LWS_POSIX
 	struct sockaddr_in sin;
 	socklen_t len = sizeof(sin);
-	int opt = 1;
-	struct libwebsocket *wsi;
 #ifdef LWS_USE_IPV6
 	struct sockaddr_in6 serv_addr6;
 #endif
 	struct sockaddr_in serv_addr4;
 	struct sockaddr *v;
+#endif
+	int opt = 1;
+	struct libwebsocket *wsi;
 
 	/* set up our external listening socket we serve on */
 
@@ -182,7 +184,7 @@ int lws_http_action(struct libwebsocket_context *context,
 	char content_length_str[32];
 	char http_version_str[10];
 	char http_conn_str[20];
-	int n, count = 0;
+	unsigned int n, count = 0;
 	static const unsigned char methods[] = {
 		WSI_TOKEN_GET_URI,
 		WSI_TOKEN_POST_URI,
@@ -457,7 +459,7 @@ upgrade_ws:
 		hit = 0;
 
 		while (*p && !hit) {
-			n = 0;
+			unsigned int n = 0;
 			while (n < sizeof(protocol_name) - 1 && *p && *p !=',')
 				protocol_name[n++] = *p++;
 			protocol_name[n] = '\0';
diff --git a/lib/service.c b/lib/service.c
index 32e09025dd0408fb7aa0178984bb31b1acfff97c..120d6c52c0a35e931e38fd67252730d2c8414274 100644
--- a/lib/service.c
+++ b/lib/service.c
@@ -297,7 +297,7 @@ libwebsocket_service_timeout_check(struct libwebsocket_context *context,
 	 * if we went beyond the allowed time, kill the
 	 * connection
 	 */
-	if (sec > wsi->pending_timeout_limit) {
+	if ((time_t)sec > wsi->pending_timeout_limit) {
 		lwsl_info("TIMEDOUT WAITING on %d\n", wsi->pending_timeout);
 		/*
 		 * Since he failed a timeout, he already had a chance to do
@@ -371,7 +371,7 @@ libwebsocket_service_fd(struct libwebsocket_context *context,
 	char draining_flow = 0;
 	int more;
 	struct lws_tokens eff_buf;
-	int pending = 0;
+	unsigned int pending = 0;
 
 	if (context->listen_service_fd)
 		listen_socket_fds_index = wsi_from_fd(context,context->listen_service_fd)->position_in_fds_table;