From 6104e77ebf5b8b77eaa953e1e47b615bf77f38e0 Mon Sep 17 00:00:00 2001 From: Saverio Proto Date: Sun, 8 Jun 2014 10:49:21 +0200 Subject: [PATCH] olsrd: bump version to 0.6.6.2, remove redundant patch --- olsrd/Makefile | 6 +- ...ocessing-error-for-fragmented-hellos.patch | 47 ---- ...002-hotfix-long-http-headers-txtinfo.patch | 36 --- .../003-hotfix-long-http-headers-json.patch | 28 --- .../patches/004-jsonplugin-http-headers.patch | 211 ------------------ 5 files changed, 3 insertions(+), 325 deletions(-) delete mode 100644 olsrd/patches/001-Fix-processing-error-for-fragmented-hellos.patch delete mode 100644 olsrd/patches/002-hotfix-long-http-headers-txtinfo.patch delete mode 100644 olsrd/patches/003-hotfix-long-http-headers-json.patch delete mode 100644 olsrd/patches/004-jsonplugin-http-headers.patch diff --git a/olsrd/Makefile b/olsrd/Makefile index 2faadd8..df8d068 100644 --- a/olsrd/Makefile +++ b/olsrd/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=olsrd -PKG_VERSION:=0.6.6.1 -PKG_RELEASE:=3 +PKG_VERSION:=0.6.6.2 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=http://www.olsr.org/releases/0.6 -PKG_MD5SUM:=ef480495f307232f1df931ae5df18bf9 +PKG_MD5SUM:=e4e04bb033cffd99b3be397fa9063a54 PKG_BUILD_PARALLEL:=1 include $(INCLUDE_DIR)/package.mk diff --git a/olsrd/patches/001-Fix-processing-error-for-fragmented-hellos.patch b/olsrd/patches/001-Fix-processing-error-for-fragmented-hellos.patch deleted file mode 100644 index a1bc5a7..0000000 --- a/olsrd/patches/001-Fix-processing-error-for-fragmented-hellos.patch +++ /dev/null @@ -1,47 +0,0 @@ -commit bdca59455c9b91b112a5c27eba2ccba3f606797d -Author: Henning Rogge -Date: Mon Mar 31 11:18:30 2014 +0200 - - Fix processing error for fragmented hellos - -diff --git a/src/process_package.c b/src/process_package.c -index 780efab..b39b692 100644 ---- a/src/process_package.c -+++ b/src/process_package.c -@@ -441,21 +441,15 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if, const uni - - /* find the input interface in the list of neighbor interfaces */ - for (walker = message->neighbors; walker != NULL; walker = walker->next) { -- if (walker->link != UNSPEC_LINK -- && ipequal(&walker->address, &in_if->ip_addr)) { -+ if (ipequal(&walker->address, &in_if->ip_addr)) { -+ /* -+ * memorize our neighbour's idea of the link quality, so that we -+ * know the link quality in both directions -+ */ -+ olsr_memorize_foreign_hello_lq(lnk, walker->link != UNSPEC_LINK ? walker : NULL); - break; - } - } -- -- /* -- * memorize our neighbour's idea of the link quality, so that we -- * know the link quality in both directions -- * -- * walker is NULL if there the current interface was not included in -- * the message (or was included as an UNSPEC_LINK) -- */ -- olsr_memorize_foreign_hello_lq(lnk, walker); -- - /* update packet loss for link quality calculation */ - olsr_received_hello_handler(lnk); - } -@@ -493,7 +487,7 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if, const uni - if (neighbor->willingness != WILL_NEVER) - process_message_neighbors(neighbor, message); - -- /* Process changes immedeatly in case of MPR updates */ -+ /* Process changes immediately in case of MPR updates */ - olsr_process_changes(); - - olsr_free_hello_packet(message); diff --git a/olsrd/patches/002-hotfix-long-http-headers-txtinfo.patch b/olsrd/patches/002-hotfix-long-http-headers-txtinfo.patch deleted file mode 100644 index e04e815..0000000 --- a/olsrd/patches/002-hotfix-long-http-headers-txtinfo.patch +++ /dev/null @@ -1,36 +0,0 @@ -commit d68c96cf53f188030452aadec466aa6389e81511 -Author: Henning Rogge -Date: Tue May 13 21:23:36 2014 +0200 - - Hotfix for much too long http headers - -diff --git a/lib/txtinfo/src/olsrd_txtinfo.c b/lib/txtinfo/src/olsrd_txtinfo.c -index b56545d..2bcce41 100644 ---- a/lib/txtinfo/src/olsrd_txtinfo.c -+++ b/lib/txtinfo/src/olsrd_txtinfo.c -@@ -301,8 +301,15 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att - FD_ZERO(&rfds); - FD_SET((unsigned int)ipc_connection, &rfds); /* Win32 needs the cast here */ - if (0 <= select(ipc_connection + 1, &rfds, NULL, NULL, &tv)) { -- char requ[128]; -- ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ), 0); /* Win32 needs the cast here */ -+ char requ[1024]; -+ ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ)-1, 0); /* Win32 needs the cast here */ -+ -+ if (s == sizeof(requ)-1) { -+ /* input was much too long, just skip the rest */ -+ char dummy[1024]; -+ -+ while (recv(ipc_connection, (void *)&dummy, sizeof(dummy), 0) == sizeof(dummy), 0); -+ } - if (0 < s) { - requ[s] = 0; - /* To print out neighbours only on the Freifunk Status -@@ -329,6 +336,7 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att - if (0 != strstr(requ, "/ver")) send_what |= SIW_VERSION; - } - } -+ - if ( send_what == 0 ) send_what = SIW_ALL; - } - diff --git a/olsrd/patches/003-hotfix-long-http-headers-json.patch b/olsrd/patches/003-hotfix-long-http-headers-json.patch deleted file mode 100644 index 8774856..0000000 --- a/olsrd/patches/003-hotfix-long-http-headers-json.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 528176910ee1d00278e4108cc23d9f4f2de8a639 -Author: Alessio Caiazza -Date: Wed May 14 22:45:33 2014 +0200 - - Hotfix for very long http headers also for jsoninfo - -diff --git a/lib/jsoninfo/src/olsrd_jsoninfo.c b/lib/jsoninfo/src/olsrd_jsoninfo.c -index 966292c..817c64a 100644 ---- a/lib/jsoninfo/src/olsrd_jsoninfo.c -+++ b/lib/jsoninfo/src/olsrd_jsoninfo.c -@@ -508,8 +508,15 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att - FD_ZERO(&rfds); - FD_SET((unsigned int)ipc_connection, &rfds); /* Win32 needs the cast here */ - if (0 <= select(ipc_connection + 1, &rfds, NULL, NULL, &tv)) { -- char requ[128]; -- ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ), 0); /* Win32 needs the cast here */ -+ char requ[1024]; -+ ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ)-1, 0); /* Win32 needs the cast here */ -+ -+ if (s == sizeof(requ)-1) { -+ /* input was too much long, just skip the rest */ -+ char dummy[1024]; -+ -+ while (recv(ipc_connection, (void *)&dummy, sizeof(dummy), 0) == sizeof(dummy), 0); -+ } - if (0 < s) { - requ[s] = 0; - /* print out the requested tables */ diff --git a/olsrd/patches/004-jsonplugin-http-headers.patch b/olsrd/patches/004-jsonplugin-http-headers.patch deleted file mode 100644 index cd76006..0000000 --- a/olsrd/patches/004-jsonplugin-http-headers.patch +++ /dev/null @@ -1,211 +0,0 @@ -commit b342385531c18b8afb42db64c7a38d7879668566 -Author: Alessio Caiazza -Date: Fri May 16 12:53:15 2014 +0200 - - jsoninfo: HTTP headers with CORS (if requested) - - The new "httpheaders" parameter prepends HTTP headers to the reply. - If not set it will default to "no" and have the same behaviour as before. - Cross-origin resource sharing headers (CORS) are included in reply allowing the - json retrieval by javascript applications not served by olsrd itself. - This will allow to easily develop js applications running directly in the - browser. - - Reviewed-by: Ferry Huberts - -diff --git a/lib/jsoninfo/README_JSONINFO b/lib/jsoninfo/README_JSONINFO -index 709c975..8311ade 100644 ---- a/lib/jsoninfo/README_JSONINFO -+++ b/lib/jsoninfo/README_JSONINFO -@@ -73,6 +73,14 @@ LoadPlugin "olsrd_jsoninfo.so.0.0" - # if you set it to 0.0.0.0, it will accept all connections - #PlParam "accept" "0.0.0.0" - -+ # The "httpheaders" parameter prepends HTTP headers to the reply. -+ # If not set it will default to "no" and have the same behaviour as before. -+ # Among with a minimal set of headers also Cross-origin resource sharing -+ # headers (CORS) are included in reply allowing the json retrieval by -+ # javascript applications not served by olsrd itself. -+ # You can enable it uncommenting the following line: -+ #PlParam "httpheaders" "yes" -+ - # specify a UUID for this node to track it for debugging - #PlParam "UUIDFile" "/etc/olsrd/olsrd.uuid" - } -diff --git a/lib/jsoninfo/src/olsrd_jsoninfo.c b/lib/jsoninfo/src/olsrd_jsoninfo.c -index 817c64a..f29a37c 100644 ---- a/lib/jsoninfo/src/olsrd_jsoninfo.c -+++ b/lib/jsoninfo/src/olsrd_jsoninfo.c -@@ -96,6 +96,9 @@ - - static int ipc_socket; - -+/* Response types */ -+#define HTTP_200 "HTTP/1.1 200 OK" -+ - /* IPC initialization function */ - static int plugin_ipc_init(void); - -@@ -126,6 +129,18 @@ static void ipc_print_interfaces(struct autobuf *); - static void ipc_print_plugins(struct autobuf *); - static void ipc_print_olsrd_conf(struct autobuf *abuf); - -+static size_t build_http_header(const char *status, const char *mime, -+ uint32_t msgsize, char *buf, uint32_t bufsize); -+ -+/* -+ * this is the size of the buffer used for build_http_header -+ * the amount of data written into the buffer will be less than -+ * 400 bytes approximatively. -+ * The size may vary because the Content-Length header contains -+ * the length of the json data -+ */ -+#define MAX_HTTPHEADER_SIZE 512 -+ - #define TXT_IPC_BUFSIZE 256 - - /* these provide all of the runtime status info */ -@@ -1282,6 +1297,9 @@ static void - send_info(unsigned int send_what, int the_socket) - { - struct autobuf abuf; -+ size_t header_len = 0; -+ char header_buf[MAX_HTTPHEADER_SIZE]; -+ const char *content_type = "application/json"; - - /* global variables for tracking when to put a comma in for JSON */ - entrynumber[0] = 0; -@@ -1320,12 +1338,17 @@ send_info(unsigned int send_what, int the_socket) - ipc_print_olsrd_conf(&abuf); - } - -- outbuffer[outbuffer_count] = olsr_malloc(abuf.len, "txt output buffer"); -- outbuffer_size[outbuffer_count] = abuf.len; -+ if(http_headers) { -+ header_len = build_http_header(HTTP_200, content_type, abuf.len, header_buf, sizeof(header_buf)); -+ } -+ -+ outbuffer[outbuffer_count] = olsr_malloc(header_len + abuf.len, "json output buffer"); -+ outbuffer_size[outbuffer_count] = header_len + abuf.len; - outbuffer_written[outbuffer_count] = 0; - outbuffer_socket[outbuffer_count] = the_socket; - -- memcpy(outbuffer[outbuffer_count], abuf.buf, abuf.len); -+ memcpy(outbuffer[outbuffer_count], header_buf, header_len); -+ memcpy((outbuffer[outbuffer_count]) + header_len, abuf.buf, abuf.len); - outbuffer_count++; - - if (outbuffer_count == 1) { -@@ -1340,6 +1363,53 @@ send_info(unsigned int send_what, int the_socket) - abuf_free(&abuf); - } - -+static size_t -+build_http_header(const char *status, const char *mime, uint32_t msgsize, -+ char *buf, uint32_t bufsize) -+{ -+ time_t currtime; -+ size_t size; -+ -+ size = snprintf(buf, bufsize, "%s\r\n", status); -+ -+ /* Date */ -+ time(&currtime); -+ size += strftime(&buf[size], bufsize - size, "Date: %a, %d %b %Y %H:%M:%S GMT\r\n", localtime(&currtime)); -+ -+ /* Server version */ -+ size += snprintf(&buf[size], bufsize - size, "Server: OLSRD JSONInfo plugin\r\n"); -+ -+ /* connection-type */ -+ size += snprintf(&buf[size], bufsize - size, "Connection: closed\r\n"); -+ -+ /* MIME type */ -+ if(mime != NULL) { -+ size += snprintf(&buf[size], bufsize - size, "Content-type: %s\r\n", mime); -+ } -+ -+ /* CORS data */ -+ /**No needs to be strict here, access control is based on source IP*/ -+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Allow-Origin: *\r\n"); -+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Allow-Methods: GET, POST, OPTIONS\r\n"); -+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Allow-Headers: Accept, Origin, X-Requested-With\r\n"); -+ size += snprintf(&buf[size], bufsize - size, "Access-Control-Max-Age: 1728000\r\n"); -+ -+ /* Content length */ -+ if (msgsize > 0) { -+ size += snprintf(&buf[size], bufsize - size, "Content-length: %i\r\n", msgsize); -+ } -+ -+ /* Cache-control -+ * No caching dynamic pages -+ */ -+ size += snprintf(&buf[size], bufsize - size, "Cache-Control: no-cache\r\n"); -+ -+ /* End header */ -+ size += snprintf(&buf[size], bufsize - size, "\r\n"); -+ -+ return size; -+} -+ - /* - * Local Variables: - * mode: c -diff --git a/lib/jsoninfo/src/olsrd_jsoninfo.h b/lib/jsoninfo/src/olsrd_jsoninfo.h -index 8478f62..56acb70 100644 ---- a/lib/jsoninfo/src/olsrd_jsoninfo.h -+++ b/lib/jsoninfo/src/olsrd_jsoninfo.h -@@ -62,6 +62,7 @@ extern union olsr_ip_addr jsoninfo_accept_ip; - extern union olsr_ip_addr jsoninfo_listen_ip; - extern int ipc_port; - extern int nompr; -+extern bool http_headers; - - int olsrd_plugin_interface_version(void); - int olsrd_plugin_init(void); -diff --git a/lib/jsoninfo/src/olsrd_plugin.c b/lib/jsoninfo/src/olsrd_plugin.c -index 36550a8..03aa45f 100644 ---- a/lib/jsoninfo/src/olsrd_plugin.c -+++ b/lib/jsoninfo/src/olsrd_plugin.c -@@ -64,6 +64,7 @@ union olsr_ip_addr jsoninfo_accept_ip; - union olsr_ip_addr jsoninfo_listen_ip; - int ipc_port; - int nompr; -+bool http_headers; - - static void my_init(void) __attribute__ ((constructor)); - static void my_fini(void) __attribute__ ((destructor)); -@@ -79,6 +80,7 @@ my_init(void) - - /* defaults for parameters */ - ipc_port = 9090; -+ http_headers = false; - if (olsr_cnf->ip_version == AF_INET) { - jsoninfo_accept_ip.v4.s_addr = htonl(INADDR_LOOPBACK); - jsoninfo_listen_ip.v4.s_addr = htonl(INADDR_ANY); -@@ -120,11 +122,26 @@ store_string(const char *value, void *data, set_plugin_parameter_addon addon __a - return 0; - } - -+static int -+store_boolean(const char *value, void *data, set_plugin_parameter_addon addon __attribute__ ((unused))) -+{ -+ bool *dest = data; -+ if(strcmp(value, "yes") == 0) -+ *dest = true; -+ else if (strcmp(value, "no") == 0) -+ *dest = false; -+ else -+ return 1; //error -+ -+ return 0; -+} -+ - static const struct olsrd_plugin_parameters plugin_parameters[] = { - {.name = "port",.set_plugin_parameter = &set_plugin_port,.data = &ipc_port}, - {.name = "accept",.set_plugin_parameter = &set_plugin_ipaddress,.data = &jsoninfo_accept_ip}, - {.name = "listen",.set_plugin_parameter = &set_plugin_ipaddress,.data = &jsoninfo_listen_ip}, - {.name = "uuidfile",.set_plugin_parameter = &store_string,.data = uuidfile}, -+ {.name = "httpheaders",.set_plugin_parameter = &store_boolean,.data = &http_headers}, - }; - - void -- 2.30.2