Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • firmware/gluon
  • 0x4A6F/gluon
  • patrick/gluon
3 results
Select Git revision
Show changes
Commits on Source (18)
Showing
with 336 additions and 34 deletions
...@@ -184,6 +184,7 @@ gluon-tools: FORCE ...@@ -184,6 +184,7 @@ gluon-tools: FORCE
+$(GLUONMAKE_EARLY) package/lua/host/install +$(GLUONMAKE_EARLY) package/lua/host/install
prepare-tmpinfo: FORCE prepare-tmpinfo: FORCE
@+$(MAKE) -r -s tmp/.prereq-build OPENWRT_BUILD= QUIET=0
mkdir -p tmp/info mkdir -p tmp/info
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/include/package*.mk $(TOPDIR)/overlay/*/*.mk" SCAN_EXTRA="" $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/include/package*.mk $(TOPDIR)/overlay/*/*.mk" SCAN_EXTRA=""
$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPS="profiles/*.mk $(TOPDIR)/include/kernel*.mk $(TOPDIR)/include/target.mk" SCAN_DEPTH=2 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1" $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPS="profiles/*.mk $(TOPDIR)/include/kernel*.mk $(TOPDIR)/include/target.mk" SCAN_DEPTH=2 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"
...@@ -205,7 +206,7 @@ feeds: FORCE ...@@ -205,7 +206,7 @@ feeds: FORCE
+$(GLUONMAKE_EARLY) prepare-tmpinfo +$(GLUONMAKE_EARLY) prepare-tmpinfo
config: FORCE config: FORCE
+$(NO_TRACE_MAKE) scripts/config/conf OPENWRT_BUILD=0 +$(NO_TRACE_MAKE) scripts/config/conf OPENWRT_BUILD= QUIET=0
+$(GLUONMAKE) prepare-tmpinfo +$(GLUONMAKE) prepare-tmpinfo
( \ ( \
cat $(GLUONDIR)/include/config $(GLUONDIR)/targets/$(GLUON_TARGET)/config; \ cat $(GLUONDIR)/include/config $(GLUONDIR)/targets/$(GLUON_TARGET)/config; \
......
...@@ -54,9 +54,9 @@ copyright = '2015, Project Gluon' ...@@ -54,9 +54,9 @@ copyright = '2015, Project Gluon'
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = '2015.1' version = '2015.1.1'
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = '2015.1' release = '2015.1.1'
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
......
...@@ -49,6 +49,7 @@ Releases ...@@ -49,6 +49,7 @@ Releases
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
releases/v2015.1.1
releases/v2015.1 releases/v2015.1
releases/v2014.4 releases/v2014.4
releases/v2014.3.1 releases/v2014.3.1
......
Gluon 2015.1.1
==============
Added hardware support
~~~~~~~~~~~~~~~~~~~~~~
ar71xx-generic
^^^^^^^^^^^^^^
* TP-Link
- TL-WA830RE (v1)
New features
~~~~~~~~~~~~
The `x86-generic` and `x86-kvm_guest` images now support two ethernet interfaces by default. If two interfaces exist during
the first boot, `eth0` will be used as LAN and `eth1` as WAN.
Bugfixes
~~~~~~~~
* Fix German "Expert Mode" label (was "Export Mode")
* Fix download of OpenSSL during build (because of broken OpenSSL download servers...)
* Fix ABI break causing kernel panics when trying to use network-related modules from the official OpenWrt repository (like `kmod-pppoe`)
* Fix race conditions breaking parallel build occasionally
* A broken network configuration would be generated when an older Gluon version was updated to 2015.1 with
``mesh_on_lan`` enabled in `site.conf`
* Minor announced/alfred JSON format fixes (don't output empty lists where empty objects would be expected)
...@@ -15,6 +15,8 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_IP_RULE=y ...@@ -15,6 +15,8 @@ CONFIG_BUSYBOX_CONFIG_FEATURE_IP_RULE=y
CONFIG_BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS=y CONFIG_BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT=y CONFIG_BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT=y
CONFIG_KERNEL_DIRECT_IO=y
CONFIG_ATH_USER_REGD=y CONFIG_ATH_USER_REGD=y
CONFIG_PACKAGE_ATH_DEBUG=y CONFIG_PACKAGE_ATH_DEBUG=y
CONFIG_ATH10K_CT_COMMUNITY_FW=y CONFIG_ATH10K_CT_COMMUNITY_FW=y
......
...@@ -48,10 +48,6 @@ else ...@@ -48,10 +48,6 @@ else
export HOSTCC_WRAPPER:=$(HOSTCC) export HOSTCC_WRAPPER:=$(HOSTCC)
endif endif
ifeq ($(FORCE),)
.config scripts/config/conf scripts/config/mconf: tmp/.prereq-build
endif
SCAN_COOKIE?=$(shell echo $$$$) SCAN_COOKIE?=$(shell echo $$$$)
export SCAN_COOKIE export SCAN_COOKIE
......
GLUON_FEEDS='openwrt gluon routing luci' GLUON_FEEDS='openwrt gluon routing luci'
OPENWRT_REPO=git://git.openwrt.org/14.07/openwrt.git OPENWRT_REPO=git://git.openwrt.org/14.07/openwrt.git
OPENWRT_COMMIT=179bab8b1700d74b28cc6cd25322f9a1ad670107 OPENWRT_COMMIT=10b1d597b97bf9038d18eb8c7c5a8d127c72e5da
PACKAGES_OPENWRT_REPO=git://github.com/openwrt/packages.git PACKAGES_OPENWRT_REPO=git://github.com/openwrt/packages.git
PACKAGES_OPENWRT_COMMIT=01fcd1f29174a56d6ddb59901ed8c67ea42c3a8f PACKAGES_OPENWRT_COMMIT=289cc1505143e4b6cfaaabd452143e159dd22d25
PACKAGES_OPENWRT_BRANCH=for-14.07 PACKAGES_OPENWRT_BRANCH=for-14.07
PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
module('gluon.announce', package.seeall) module('gluon.announce', package.seeall)
fs = require 'luci.fs' fs = require 'luci.fs'
json = require 'luci.json'
uci = require('luci.model.uci').cursor() uci = require('luci.model.uci').cursor()
util = require 'luci.util' util = require 'luci.util'
...@@ -15,7 +16,7 @@ local function collect_entry(entry) ...@@ -15,7 +16,7 @@ local function collect_entry(entry)
end end
function collect_dir(dir) function collect_dir(dir)
local ret = {} local ret = { [json.null] = true }
for _, entry in ipairs(fs.dir(dir)) do for _, entry in ipairs(fs.dir(dir)) do
if entry:sub(1, 1) ~= '.' then if entry:sub(1, 1) ~= '.' then
......
...@@ -27,7 +27,7 @@ msgid "Longitude" ...@@ -27,7 +27,7 @@ msgid "Longitude"
msgstr "Längengrad" msgstr "Längengrad"
msgid "Altitude" msgid "Altitude"
msgstr "Höhenmeter über Normalnull" msgstr "Höhe"
msgid "Show node on the map" msgid "Show node on the map"
msgstr "Knoten auf der Karte anzeigen" msgstr "Knoten auf der Karte anzeigen"
......
...@@ -27,7 +27,7 @@ msgid "Don't switch off the device in any circumstance!" ...@@ -27,7 +27,7 @@ msgid "Don't switch off the device in any circumstance!"
msgstr "Unterbrich auf keinen Fall die Stromversorgung!" msgstr "Unterbrich auf keinen Fall die Stromversorgung!"
msgid "Expert Mode" msgid "Expert Mode"
msgstr "Export Mode" msgstr "Expert Mode"
msgid "Firmware image" msgid "Firmware image"
msgstr "Firmware-Datei" msgstr "Firmware-Datei"
......
local json = require 'luci.json'
local util = require 'luci.util'
local fs = require 'nixio.fs'
local ifname_address_cache = {} local ifname_address_cache = {}
function ifname2address(ifname) function ifname2address(ifname)
...@@ -26,7 +22,7 @@ function batadv() ...@@ -26,7 +22,7 @@ function batadv()
if mac1 ~= nil and mac1 == mac2 then if mac1 ~= nil and mac1 == mac2 then
ifaddress = ifname2address(ifname) ifaddress = ifname2address(ifname)
if interfaces[ifaddress] == nil then if interfaces[ifaddress] == nil then
interfaces[ifaddress] = { neighbours = {} } interfaces[ifaddress] = { neighbours = { [json.null] = true } }
end end
interfaces[ifaddress].neighbours[mac1] = { tq = tonumber(tq) interfaces[ifaddress].neighbours[mac1] = { tq = tonumber(tq)
...@@ -35,7 +31,9 @@ function batadv() ...@@ -35,7 +31,9 @@ function batadv()
end end
end end
return interfaces if next(interfaces) then
return interfaces
end
end end
return batadv() return batadv()
local json = require 'luci.json'
local util = require 'luci.util'
local fs = require 'nixio.fs'
local iwinfo = require 'iwinfo' local iwinfo = require 'iwinfo'
function neighbours(iface) function neighbours(iface)
...@@ -12,7 +9,9 @@ function neighbours(iface) ...@@ -12,7 +9,9 @@ function neighbours(iface)
} }
end end
return stations if next(stations) then
return stations
end
end end
function interfaces() function interfaces()
...@@ -38,4 +37,6 @@ for address, iface in pairs(interfaces()) do ...@@ -38,4 +37,6 @@ for address, iface in pairs(interfaces()) do
wifi[address] = { neighbours = neighbours(iface) } wifi[address] = { neighbours = neighbours(iface) }
end end
return wifi if next(wifi) then
return wifi
end
...@@ -48,5 +48,6 @@ end ...@@ -48,5 +48,6 @@ end
return { return {
wireless = nil_table(wireless), wireless = nil_table(wireless),
tunnel = nil_table(tunnel), tunnel = nil_table(tunnel),
other = nil_table(other) other = nil_table(other),
[json.null] = true
} }
#!/usr/bin/lua #!/usr/bin/lua
local site = require 'gluon.site_config' local site = require 'gluon.site_config'
local uci = require 'luci.model.uci'
local util = require 'gluon.util' local util = require 'gluon.util'
local sysconfig = require 'gluon.sysconfig' local sysconfig = require 'gluon.sysconfig'
local c = uci.cursor() local uci = require('luci.model.uci').cursor()
local lutil = require 'luci.util'
if sysconfig.lan_ifname then if sysconfig.lan_ifname and not uci:get('network', 'mesh_lan') then
if not c:get('network', 'mesh_lan') then local enable = site.mesh_on_lan
c:section('network', 'interface', 'mesh_lan',
if enable then
local interfaces = uci:get('network', 'client', 'ifname')
if interfaces and lutil.contains(interfaces:split(' '), sysconfig.lan_ifname) then
enable = false
end
end
uci:section('network', 'interface', 'mesh_lan',
{ ifname = sysconfig.lan_ifname { ifname = sysconfig.lan_ifname
, proto = 'batadv' , proto = 'batadv'
, mesh = 'bat0' , mesh = 'bat0'
, macaddr = util.generate_mac(1, 1) , macaddr = util.generate_mac(1, 1)
, auto = site.mesh_on_lan and 1 or 0 , auto = enable and 1 or 0
}) })
end
uci:save('network')
uci:commit('network')
end end
c:save('network')
c:commit('network')
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 28 May 2015 03:48:14 +0200
Subject: build: prevent race condition between tool symlink creation
Filter out STAGING_DIR_HOST binary path to prevent picking up grep from this
path.
diff --git a/tools/Makefile b/tools/Makefile
index 137ad61..c24bca1 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -120,7 +120,7 @@ $(STAGING_DIR_HOST)/.prepared: $(TMP_DIR)/.build
define PrepareCommand
$(STAGING_DIR_HOST)/bin/$(1): $(STAGING_DIR_HOST)/.prepared
@mkdir -p "$$(dir $$@)"; rm -f "$$@"
- @export FILE="$$$$(which $(2) 2>/dev/null | grep -v 'not found' | head -n1)"; [ -n "$$$$FILE" ] || { \
+ @export PATH="$(subst $(space),:,$(filter-out $(STAGING_DIR_HOST)/%,$(subst :,$(space),$(PATH))))"; export FILE="$$$$(which $(2) 2>/dev/null | grep -v 'not found' | head -n1)"; [ -n "$$$$FILE" ] || { \
echo "Command $(1) not found."; false; \
}; ln -s "$$$$FILE" "$$@"
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Mon, 15 Jun 2015 21:28:06 +0200
Subject: ar71xx: fix AR71XX_MODEL for TP-Link TL-WA830RE v1
The v1 identifies as v10 internally. As there is no TL-WA830RE v10, add a
workaround to avoid confusing users.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 1838cb4..d79776b 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -145,6 +145,10 @@ tplink_board_detect() {
;;
"083000"*)
model="TP-Link TL-WA830RE"
+
+ if [ "$hwver" = 'v10' ]; then
+ hwver='v1'
+ fi
;;
"084100"*)
model="TP-Link TL-WR841N/ND"
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Tue, 16 Jun 2015 01:07:41 +0200
Subject: x86: remove old soekris config hacks, install a more appropriate default /etc/config/network with lan+wan
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
diff --git a/target/linux/x86/base-files/etc/config/network b/target/linux/x86/base-files/etc/config/network
new file mode 100644
index 0000000..c9953a0
--- /dev/null
+++ b/target/linux/x86/base-files/etc/config/network
@@ -0,0 +1,26 @@
+# Copyright (C) 2006 OpenWrt.org
+
+config interface loopback
+ option ifname lo
+ option proto static
+ option ipaddr 127.0.0.1
+ option netmask 255.0.0.0
+
+config interface lan
+ option ifname eth0
+ option type bridge
+ option proto static
+ option ipaddr 192.168.1.1
+ option netmask 255.255.255.0
+ option ip6assign 60
+
+config interface wan
+ option ifname eth1
+ option proto dhcp
+
+config interface wan6
+ option ifname eth1
+ option proto dhcpv6
+
+config globals globals
+ option ula_prefix auto
diff --git a/target/linux/x86/base-files/etc/defconfig/net4801/network b/target/linux/x86/base-files/etc/defconfig/net4801/network
deleted file mode 100644
index 172d513..0000000
--- a/target/linux/x86/base-files/etc/defconfig/net4801/network
+++ /dev/null
@@ -1,24 +0,0 @@
-config interface loopback
- option ifname lo
- option proto static
- option ipaddr 127.0.0.1
- option netmask 255.0.0.0
-
-config interface lan
- option ifname eth1
- option type bridge
- option proto static
- option ipaddr 192.168.1.1
- option netmask 255.255.255.0
- option ip6assign 60
-
-config interface wan
- option ifname eth0
- option proto dhcp
-
-config interface wan6
- option ifname @wan
- option proto dhcpv6
-
-config globals globals
- option ula_prefix auto
diff --git a/target/linux/x86/base-files/etc/defconfig/net4826/network b/target/linux/x86/base-files/etc/defconfig/net4826/network
deleted file mode 100644
index 7c9fb63..0000000
--- a/target/linux/x86/base-files/etc/defconfig/net4826/network
+++ /dev/null
@@ -1,12 +0,0 @@
-config interface loopback
- option ifname lo
- option proto static
- option ipaddr 127.0.0.1
- option netmask 255.0.0.0
-
-config interface lan
- option ifname eth0
- option type bridge
- option proto static
- option ipaddr 192.168.1.1
- option netmask 255.255.255.0
diff --git a/target/linux/x86/base-files/etc/init.d/defconfig b/target/linux/x86/base-files/etc/init.d/defconfig
deleted file mode 100755
index 4b4f28f..0000000
--- a/target/linux/x86/base-files/etc/init.d/defconfig
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh /etc/rc.common
-#
-# Copyright (C) 2010 Thinktube Inc.
-#
-
-START=05
-
-start() {
- . /lib/soekris.sh
-
- local board=$(net48xx_board_name)
-
- [ ! -d /etc/defconfig/$board ] && board="net4826"
-
- for f in $( ls /etc/defconfig/$board ); do
- if [ ! -e /etc/config/$f ]; then
- cp /etc/defconfig/$board/$f /etc/config/
- fi
- done
-}
diff --git a/target/linux/x86/base-files/lib/soekris.sh b/target/linux/x86/base-files/lib/soekris.sh
deleted file mode 100755
index e416ad3..0000000
--- a/target/linux/x86/base-files/lib/soekris.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-net48xx_board_name () {
- local name
- local pci=`wc -l /proc/bus/pci/devices`
-
- case "$pci" in
- *"8"*)
- name="net4826"
- ;;
- *1[0-4]*)
- name="net4801"
- ;;
- *)
- name="net4826"
- ;;
- esac
- echo $name
-}
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Wed, 17 Jun 2015 00:03:39 +0200
Subject: Revert netns_ct ABI change introduced in r44874
diff --git a/target/linux/generic/patches-3.10/617-netfilter_skip_filter_compat.patch b/target/linux/generic/patches-3.10/617-netfilter_skip_filter_compat.patch
new file mode 100644
index 0000000..dce0cd0
--- /dev/null
+++ b/target/linux/generic/patches-3.10/617-netfilter_skip_filter_compat.patch
@@ -0,0 +1,10 @@
+--- a/include/net/netns/conntrack.h
++++ b/include/net/netns/conntrack.h
+@@ -80,6 +80,7 @@ struct netns_ct {
+ int sysctl_acct;
+ int sysctl_tstamp;
+ int sysctl_checksum;
++ int skip_filter;
+ unsigned int sysctl_log_invalid; /* Log invalid packets */
+ int sysctl_auto_assign_helper;
+ bool auto_assign_helper_warned;
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Mon, 22 Jun 2015 00:50:09 +0200
Subject: ar71xx: add support for TP-LINK TL-WR740N/TL-WR741ND
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index fc59c33..53ae3f6 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -1233,6 +1233,8 @@ $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR710,tl-wr710n-v1,TL-WR710N,tt
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR720NV3,tl-wr720n-v3,TL-WR720N-v3,ttyATH0,115200,0x07200103,1,4Mlzma))
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR740NV4,tl-wr740n-v4,TL-WR741ND-v4,ttyATH0,115200,0x07400004,1,4Mlzma))
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR741NV4,tl-wr741nd-v4,TL-WR741ND-v4,ttyATH0,115200,0x07410004,1,4Mlzma))
+$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR740NV5,tl-wr740n-v5,TL-WR741ND-v4,ttyATH0,115200,0x07400005,1,4Mlzma))
+$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR741NV5,tl-wr741nd-v5,TL-WR741ND-v4,ttyATH0,115200,0x07400005,1,4Mlzma))
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR743NV2,tl-wr743nd-v2,TL-WR741ND-v4,ttyATH0,115200,0x07430002,1,4Mlzma))
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWA750,tl-wa750re-v1,TL-WA750RE,ttyS0,115200,0x07500001,1,4Mlzma))
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR841NV8,tl-wr841n-v8,TL-WR841N-v8,ttyS0,115200,0x08410008,1,4Mlzma))
@@ -1318,8 +1320,8 @@ $(eval $(call MultiProfile,TLWA830,TLWA830RV1 TLWA830RV2))
$(eval $(call MultiProfile,TLWA901,TLWA901NV1 TLWA901NV2 TLWA901NV3))
$(eval $(call MultiProfile,TLWA7510,TLWA7510NV1))
$(eval $(call MultiProfile,TLWR720,TLWR720NV3))
-$(eval $(call MultiProfile,TLWR740,TLWR740NV1 TLWR740NV3 TLWR740NV4))
-$(eval $(call MultiProfile,TLWR741,TLWR741NV1 TLWR741NV2 TLWR741NV4))
+$(eval $(call MultiProfile,TLWR740,TLWR740NV1 TLWR740NV3 TLWR740NV4 TLWR740NV5))
+$(eval $(call MultiProfile,TLWR741,TLWR741NV1 TLWR741NV2 TLWR741NV4 TLWR741NV5))
$(eval $(call MultiProfile,TLWR743,TLWR743NV1 TLWR743NV2))
$(eval $(call MultiProfile,TLWR841,TLWR841NV15 TLWR841NV3 TLWR841NV5 TLWR841NV7 TLWR841NV8 TLWR841NV9))
$(eval $(call MultiProfile,TLWR842,TLWR842V1 TLWR842V2))
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 4 Jun 2015 21:03:24 +0200
Subject: luci-lib-json: ignore null keys to allow encoding empty objects
There is currently no way to encode an empty object {}, as empty tables are
encoded as empty lists [].
With this patch, encode() will ignore table fields with the key json.null (which
doesn't make sense anyways). This allows adding a field with key json.null to
force encoding it as an object.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
diff --git a/libs/json/luasrc/json.lua b/libs/json/luasrc/json.lua
index 8dbaf91..11a5608 100644
--- a/libs/json/luasrc/json.lua
+++ b/libs/json/luasrc/json.lua
@@ -205,11 +205,13 @@ function Encoder.parse_iter(self, obj)
local first = true
for key, entry in pairs(obj) do
- first = first or self:put(",")
- first = first and false
- self:parse_string(tostring(key))
- self:put(":")
- self:dispatch(entry)
+ if key ~= null then
+ first = first or self:put(",")
+ first = first and false
+ self:parse_string(tostring(key))
+ self:put(":")
+ self:dispatch(entry)
+ end
end
self:put("}")