diff options
author | A. Wilcox <awilcox@wilcox-tech.com> | 2018-10-10 02:40:39 +0000 |
---|---|---|
committer | A. Wilcox <awilcox@wilcox-tech.com> | 2018-10-10 02:40:39 +0000 |
commit | 5c3c3141ae833e05ed02cc61c67737bc7e1dd145 (patch) | |
tree | 348549f701744717dd07178651d3245e136bb5a1 /user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch | |
parent | cd08a629daf51010fd863fd81add887377cd6b20 (diff) | |
parent | cef60d848566b56692a9604df7c4e53c8b5605c6 (diff) | |
download | packages-5c3c3141ae833e05ed02cc61c67737bc7e1dd145.tar.gz packages-5c3c3141ae833e05ed02cc61c67737bc7e1dd145.tar.bz2 packages-5c3c3141ae833e05ed02cc61c67737bc7e1dd145.tar.xz packages-5c3c3141ae833e05ed02cc61c67737bc7e1dd145.zip |
Merge branch 'prosody' into 'master'
Import prosody from Alpine, with cleanups.
See merge request !84
Diffstat (limited to 'user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch')
-rw-r--r-- | user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch b/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch new file mode 100644 index 000000000..61bae6fbf --- /dev/null +++ b/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch @@ -0,0 +1,49 @@ +From 3041a808c3797e3c87272d71666e7b2f7c7a9f46 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Wed, 25 Jan 2017 12:43:29 +0100 +Subject: [PATCH] Create socket on first sendto if family agnostic udp() was + used + +Create socket and set family on first sendto() if udp() was created +without address family. + +Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> +--- + src/udp.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/src/udp.c b/src/udp.c +index ec97252..605c195 100644 +--- a/src/udp.c ++++ b/src/udp.c +@@ -189,6 +189,27 @@ static int meth_sendto(lua_State *L) { + lua_pushstring(L, gai_strerror(err)); + return 2; + } ++ ++ /* create socket if on first sendto if AF_UNSPEC was set */ ++ if (udp->family == AF_UNSPEC && udp->sock == SOCKET_INVALID) { ++ struct addrinfo *ap; ++ const char *errstr = NULL; ++ for (ap = ai; ap != NULL; ap = ap->ai_next) { ++ errstr = inet_trycreate(&udp->sock, ap->ai_family, SOCK_DGRAM, 0); ++ if (errstr == NULL) { ++ socket_setnonblocking(&udp->sock); ++ udp->family = ap->ai_family; ++ break; ++ } ++ } ++ if (errstr != NULL) { ++ lua_pushnil(L); ++ lua_pushstring(L, errstr); ++ freeaddrinfo(ai); ++ return 2; ++ } ++ } ++ + timeout_markstart(tm); + err = socket_sendto(&udp->sock, data, count, &sent, ai->ai_addr, + (socklen_t) ai->ai_addrlen, tm); +-- +2.11.0 + |