summaryrefslogtreecommitdiff
path: root/community/libuv
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-05-29 04:09:56 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-05-29 04:09:56 +0000
commit44209e62f1f8f0e9efe048846bb09e6eb51ea9f4 (patch)
tree97720b9f37a268443fe50a258ef16c587a02ec91 /community/libuv
parentfc3a052d9f439abcf0ce424b7d45b682a5377087 (diff)
Thu May 29 04:04:14 UTC 2014
Diffstat (limited to 'community/libuv')
-rw-r--r--community/libuv/PKGBUILD15
-rw-r--r--community/libuv/inet_pton6.patch146
2 files changed, 157 insertions, 4 deletions
diff --git a/community/libuv/PKGBUILD b/community/libuv/PKGBUILD
index 351e64973..a2490709f 100644
--- a/community/libuv/PKGBUILD
+++ b/community/libuv/PKGBUILD
@@ -1,15 +1,21 @@
-# $Id: PKGBUILD 109510 2014-04-15 09:35:38Z mtorromeo $
+# $Id: PKGBUILD 112017 2014-05-28 16:26:31Z mtorromeo $
# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
pkgname=libuv
-pkgver=0.11.24
+pkgver=0.11.25
pkgrel=1
pkgdesc="A new platform layer for Node.JS"
arch=('i686' 'x86_64')
url="https://github.com/joyent/libuv"
license=('custom')
depends=('glibc')
-source=("https://github.com/joyent/libuv/archive/v$pkgver.tar.gz")
+source=("https://github.com/joyent/libuv/archive/v$pkgver.tar.gz"
+ "inet_pton6.patch::https://github.com/joyent/libuv/compare/6d56e6e132717df13c7ed76e6cc3ee53105759be...4fac9427e4a652cdebf241803ce7443dd59a4451.patch")
+
+prepare() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 -i "$srcdir/inet_pton6.patch"
+}
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -38,4 +44,5 @@ package() {
"$pkgdir/usr/share/doc/$pkgname/ChangeLog"
}
-sha256sums=('8e23517d37a8c820fc68fa250b7398f520c76e40250b8da2a2eca230eb7f3ab8')
+sha256sums=('b95a3e5eca9554998b7423ee786205e52731e82e2d24cbbd4f65af763de542fb'
+ '655c98f10daf171ce736cea594b710a3f8d72f4da02613588eb9856e4bb36561')
diff --git a/community/libuv/inet_pton6.patch b/community/libuv/inet_pton6.patch
new file mode 100644
index 000000000..3b0409712
--- /dev/null
+++ b/community/libuv/inet_pton6.patch
@@ -0,0 +1,146 @@
+From e7b3c3fb6b56298174e5eaf2ac3bea2b721cf0f5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= <saghul@gmail.com>
+Date: Fri, 23 May 2014 16:36:57 +0200
+Subject: [PATCH 1/2] unix, windows: define UV__INET/6_ADDRSTRLEN constants
+
+---
+ src/inet.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/inet.c b/src/inet.c
+index 9220de6..0eb9438 100644
+--- a/src/inet.c
++++ b/src/inet.c
+@@ -27,6 +27,9 @@
+ #include "uv.h"
+ #include "uv-common.h"
+
++#define UV__INET_ADDRSTRLEN 16
++#define UV__INET6_ADDRSTRLEN 46
++
+
+ static int inet_ntop4(const unsigned char *src, char *dst, size_t size);
+ static int inet_ntop6(const unsigned char *src, char *dst, size_t size);
+@@ -49,7 +52,7 @@ int uv_inet_ntop(int af, const void* src, char* dst, size_t size) {
+
+ static int inet_ntop4(const unsigned char *src, char *dst, size_t size) {
+ static const char fmt[] = "%u.%u.%u.%u";
+- char tmp[sizeof "255.255.255.255"];
++ char tmp[UV__INET_ADDRSTRLEN];
+ int l;
+
+ #ifndef _WIN32
+@@ -74,7 +77,7 @@ static int inet_ntop6(const unsigned char *src, char *dst, size_t size) {
+ * Keep this in mind if you think this function should have been coded
+ * to use pointer overlays. All the world's not a VAX.
+ */
+- char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp;
++ char tmp[UV__INET6_ADDRSTRLEN], *tp;
+ struct { int base, len; } best, cur;
+ unsigned int words[sizeof(struct in6_addr) / sizeof(uint16_t)];
+ int i;
+--
+1.9.3
+
+
+From 4fac9427e4a652cdebf241803ce7443dd59a4451 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= <saghul@gmail.com>
+Date: Fri, 23 May 2014 09:25:23 +0200
+Subject: [PATCH 2/2] unix, windows: fix parsing scoped IPv6 addresses
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Saúl Ibarra Corretgé <saghul@gmail.com>
+---
+ src/inet.c | 36 ++++++++++++++++++++----------------
+ test/test-ip6-addr.c | 2 ++
+ 2 files changed, 22 insertions(+), 16 deletions(-)
+
+diff --git a/src/inet.c b/src/inet.c
+index 0eb9438..c948b2e 100644
+--- a/src/inet.c
++++ b/src/inet.c
+@@ -159,11 +159,27 @@ static int inet_ntop6(const unsigned char *src, char *dst, size_t size) {
+
+
+ int uv_inet_pton(int af, const char* src, void* dst) {
++ if (src == NULL || dst == NULL)
++ return UV_EINVAL;
++
+ switch (af) {
+ case AF_INET:
+ return (inet_pton4(src, dst));
+- case AF_INET6:
+- return (inet_pton6(src, dst));
++ case AF_INET6: {
++ int len;
++ char tmp[UV__INET6_ADDRSTRLEN], *s, *p;
++ s = (char*) src;
++ p = strchr(src, '%');
++ if (p != NULL) {
++ s = tmp;
++ len = p - src;
++ if (len > UV__INET6_ADDRSTRLEN-1)
++ return UV_EINVAL;
++ memcpy(s, src, len);
++ s[len] = '\0';
++ }
++ return inet_pton6(s, dst);
++ }
+ default:
+ return UV_EAFNOSUPPORT;
+ }
+@@ -228,7 +244,7 @@ static int inet_pton6(const char *src, unsigned char *dst) {
+ curtok = src;
+ seen_xdigits = 0;
+ val = 0;
+- while ((ch = *src++) != '\0' && ch != '%') {
++ while ((ch = *src++) != '\0') {
+ const char *pch;
+
+ if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
+@@ -259,19 +275,7 @@ static int inet_pton6(const char *src, unsigned char *dst) {
+ continue;
+ }
+ if (ch == '.' && ((tp + sizeof(struct in_addr)) <= endp)) {
+- int err;
+-
+- /* Scope id present, parse ipv4 addr without it */
+- pch = strchr(curtok, '%');
+- if (pch != NULL) {
+- char tmp[sizeof "255.255.255.255"];
+-
+- memcpy(tmp, curtok, pch - curtok);
+- curtok = tmp;
+- src = pch;
+- }
+-
+- err = inet_pton4(curtok, tp);
++ int err = inet_pton4(curtok, tp);
+ if (err == 0) {
+ tp += sizeof(struct in_addr);
+ seen_xdigits = 0;
+diff --git a/test/test-ip6-addr.c b/test/test-ip6-addr.c
+index 624b93b..cf8491f 100644
+--- a/test/test-ip6-addr.c
++++ b/test/test-ip6-addr.c
+@@ -103,6 +103,7 @@ TEST_IMPL(ip6_addr_link_local) {
+ X("fe80::2acf:daff:fedd:342a") \
+ X("fe80:0:0:0:2acf:daff:fedd:342a") \
+ X("fe80:0:0:0:2acf:daff:1.2.3.4") \
++ X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") \
+
+ #define BAD_ADDR_LIST(X) \
+ X(":::1") \
+@@ -110,6 +111,7 @@ TEST_IMPL(ip6_addr_link_local) {
+ X("fe80:0:0:0:2acf:daff:fedd:342a:5678") \
+ X("fe80:0:0:0:2acf:daff:abcd:1.2.3.4") \
+ X("fe80:0:0:2acf:daff:1.2.3.4.5") \
++ X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255.255") \
+
+ #define TEST_GOOD(ADDR) \
+ ASSERT(0 == uv_inet_pton(AF_INET6, ADDR, &addr)); \
+--
+1.9.3
+