diff --git a/README.md b/README.md
index f892c6b3a..8e697d04b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Koto 1.1.2
+Koto 1.1.2.1
=============
What is Koto?
diff --git a/configure.ac b/configure.ac
index c477d69d6..96d0c3b55 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 1)
define(_CLIENT_VERSION_MINOR, 1)
-define(_CLIENT_VERSION_REVISION, 2)
+define(_CLIENT_VERSION_REVISION, 2.1)
define(_CLIENT_VERSION_BUILD, 50)
define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50)))
define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1)))
diff --git a/doc/man/koto-cli.1 b/doc/man/koto-cli.1
index 1695a7a38..e0efbc15b 100644
--- a/doc/man/koto-cli.1
+++ b/doc/man/koto-cli.1
@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
-.TH KOTO-CLI "1" "July 2018" "koto-cli v1.1.2" "User Commands"
+.TH KOTO-CLI "1" "September 2018" "koto-cli v1.1.2.1" "User Commands"
.SH NAME
-koto-cli \- manual page for koto-cli v1.1.2
+koto-cli \- manual page for koto-cli v1.1.2.1
.SH DESCRIPTION
-Koto RPC client version v1.1.2
+Koto RPC client version v1.1.2.1
.PP
In order to ensure you are adequately protecting your privacy when using Koto,
please see .
diff --git a/doc/man/koto-qt.1 b/doc/man/koto-qt.1
index e75a82ea0..a0578dedc 100644
--- a/doc/man/koto-qt.1
+++ b/doc/man/koto-qt.1
@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4.
-.TH LITECOINZ-QT "1" "June 2018" "koto-qt v1.1.2" "User Commands"
+.TH LITECOINZ-QT "1" "September 2018" "koto-qt v1.1.2.1" "User Commands"
.SH NAME
-koto-qt \- manual page for koto-qt v1.1.2
+koto-qt \- manual page for koto-qt v1.1.2.1
.SH DESCRIPTION
-LitecoinZ version v1.1.2 (64\-bit)
+Koto version v1.1.2.1 (64\-bit)
Usage:
.IP
koto\-qt [command\-line options]
diff --git a/doc/man/koto-tx.1 b/doc/man/koto-tx.1
index 7bbfac0de..b4b5aa77f 100644
--- a/doc/man/koto-tx.1
+++ b/doc/man/koto-tx.1
@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
-.TH KOTO-TX "1" "July 2018" "koto-tx v1.1.2" "User Commands"
+.TH KOTO-TX "1" "September 2018" "koto-tx v1.1.2.1" "User Commands"
.SH NAME
-koto-tx \- manual page for koto-tx v1.1.2
+koto-tx \- manual page for koto-tx v1.1.2.1
.SH DESCRIPTION
-Koto koto\-tx utility version v1.1.2
+Koto koto\-tx utility version v1.1.2.1
.SS "Usage:"
.TP
koto\-tx [options] [commands]
diff --git a/doc/man/kotod.1 b/doc/man/kotod.1
index ee23227f5..b00d560cb 100644
--- a/doc/man/kotod.1
+++ b/doc/man/kotod.1
@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
-.TH KOTOD "1" "July 2018" "kotod v1.1.2" "User Commands"
+.TH KOTOD "1" "September 2018" "kotod v1.1.2.1" "User Commands"
.SH NAME
-kotod \- manual page for kotod v1.1.2
+kotod \- manual page for kotod v1.1.2.1
.SH DESCRIPTION
-Koto Daemon version v1.1.2
+Koto Daemon version v1.1.2.1
.PP
In order to ensure you are adequately protecting your privacy when using Koto,
please see .
diff --git a/src/clientversion.h b/src/clientversion.h
index 4bf392c58..ad8432052 100644
--- a/src/clientversion.h
+++ b/src/clientversion.h
@@ -17,7 +17,7 @@
//! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 1
#define CLIENT_VERSION_MINOR 1
-#define CLIENT_VERSION_REVISION 2
+#define CLIENT_VERSION_REVISION 2.1
#define CLIENT_VERSION_BUILD 50
//! Set to true for release, false for prerelease or test build
diff --git a/src/deprecation.h b/src/deprecation.h
index e27cf24be..fc3697ab6 100644
--- a/src/deprecation.h
+++ b/src/deprecation.h
@@ -8,7 +8,7 @@
// Deprecation policy:
// * Shut down 16 weeks' worth of blocks after the estimated release block height.
// * A warning is shown during the 2 weeks' worth of blocks prior to shut down.
-static const int APPROX_RELEASE_HEIGHT = 386640;
+static const int APPROX_RELEASE_HEIGHT = 400000;
static const int WEEKS_UNTIL_DEPRECATION = 16;
static const int DEPRECATION_HEIGHT = APPROX_RELEASE_HEIGHT + (WEEKS_UNTIL_DEPRECATION * 7 * 24 * 60);
diff --git a/src/sysendian.h b/src/sysendian.h
index 049519464..52c1fe73b 100644
--- a/src/sysendian.h
+++ b/src/sysendian.h
@@ -1,5 +1,5 @@
/*-
- * Copyright 2007-2009 Colin Percival
+ * Copyright 2007-2014 Colin Percival
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,37 +22,31 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * This file was originally written by Colin Percival as part of the Tarsnap
- * online backup system.
*/
+
#ifndef _SYSENDIAN_H_
#define _SYSENDIAN_H_
-/* If we don't have be64enc, the we have isn't usable. */
-#if !HAVE_DECL_BE64ENC
-#undef HAVE_SYS_ENDIAN_H
-#endif
-
-#ifdef HAVE_SYS_ENDIAN_H
-
-#include
-
-#else
-
#include
+/* Avoid namespace collisions with BSD . */
+#define be32dec libcperciva_be32dec
+#define be32enc libcperciva_be32enc
+#define be64enc libcperciva_be64enc
+#define le32dec libcperciva_le32dec
+#define le32enc libcperciva_le32enc
+
static inline uint32_t
-be32dec(const void *pp)
+be32dec(const void * pp)
{
- const uint8_t *p = (uint8_t const *)pp;
+ const uint8_t * p = (uint8_t const *)pp;
return ((uint32_t)(p[3]) + ((uint32_t)(p[2]) << 8) +
((uint32_t)(p[1]) << 16) + ((uint32_t)(p[0]) << 24));
}
static inline void
-be32enc(void *pp, uint32_t x)
+be32enc(void * pp, uint32_t x)
{
uint8_t * p = (uint8_t *)pp;
@@ -62,19 +56,8 @@ be32enc(void *pp, uint32_t x)
p[0] = (x >> 24) & 0xff;
}
-static inline uint64_t
-be64dec(const void *pp)
-{
- const uint8_t *p = (uint8_t const *)pp;
-
- return ((uint64_t)(p[7]) + ((uint64_t)(p[6]) << 8) +
- ((uint64_t)(p[5]) << 16) + ((uint64_t)(p[4]) << 24) +
- ((uint64_t)(p[3]) << 32) + ((uint64_t)(p[2]) << 40) +
- ((uint64_t)(p[1]) << 48) + ((uint64_t)(p[0]) << 56));
-}
-
static inline void
-be64enc(void *pp, uint64_t x)
+be64enc(void * pp, uint64_t x)
{
uint8_t * p = (uint8_t *)pp;
@@ -89,38 +72,16 @@ be64enc(void *pp, uint64_t x)
}
static inline uint32_t
-le32dec(const void *pp)
+le32dec(const void * pp)
{
- const uint8_t *p = (uint8_t const *)pp;
+ const uint8_t * p = (uint8_t const *)pp;
return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) +
((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24));
}
static inline void
-le32enc(void *pp, uint32_t x)
-{
- uint8_t * p = (uint8_t *)pp;
-
- p[0] = x & 0xff;
- p[1] = (x >> 8) & 0xff;
- p[2] = (x >> 16) & 0xff;
- p[3] = (x >> 24) & 0xff;
-}
-
-static inline uint64_t
-le64dec(const void *pp)
-{
- const uint8_t *p = (uint8_t const *)pp;
-
- return ((uint64_t)(p[0]) + ((uint64_t)(p[1]) << 8) +
- ((uint64_t)(p[2]) << 16) + ((uint64_t)(p[3]) << 24) +
- ((uint64_t)(p[4]) << 32) + ((uint64_t)(p[5]) << 40) +
- ((uint64_t)(p[6]) << 48) + ((uint64_t)(p[7]) << 56));
-}
-
-static inline void
-le64enc(void *pp, uint64_t x)
+le32enc(void * pp, uint32_t x)
{
uint8_t * p = (uint8_t *)pp;
@@ -128,11 +89,6 @@ le64enc(void *pp, uint64_t x)
p[1] = (x >> 8) & 0xff;
p[2] = (x >> 16) & 0xff;
p[3] = (x >> 24) & 0xff;
- p[4] = (x >> 32) & 0xff;
- p[5] = (x >> 40) & 0xff;
- p[6] = (x >> 48) & 0xff;
- p[7] = (x >> 56) & 0xff;
}
-#endif /* !HAVE_SYS_ENDIAN_H */
#endif /* !_SYSENDIAN_H_ */
diff --git a/src/yespower-opt.c b/src/yespower-opt.c
index 7d9b70a62..c0d4d6233 100644
--- a/src/yespower-opt.c
+++ b/src/yespower-opt.c
@@ -496,8 +496,7 @@ typedef struct {
((uint64_t)(uint32_t)_mm_cvtsi128_si32(HI32(X)) << 32))
#endif
-//#if defined(__x86_64__) && (defined(__AVX__) || !defined(__GNUC__))
-#if 0 /* XXX The follwoing code is slower XXX */
+#if defined(__x86_64__) && (defined(__AVX__) || !defined(__GNUC__))
/* 64-bit with AVX */
/* Force use of 64-bit AND instead of two 32-bit ANDs */
#undef DECL_SMASK2REG
diff --git a/src/yespower.c b/src/yespower.c
index 67cf58c64..1b930724e 100644
--- a/src/yespower.c
+++ b/src/yespower.c
@@ -1,5 +1,5 @@
/*-
- * Copyright 2013-2018 Alexander Peslyak
+ * Copyright (c) 2018 The Koto developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -21,6 +21,7 @@
#include
#include
#include
+#include /* for abort() */
#include "yespower.h"
@@ -33,5 +34,6 @@ void yespower_hash(const char *input, size_t inputlen, char *output)
.pers = (const uint8_t *)input,
.perslen = inputlen
};
- yespower_tls((unsigned char *)input, inputlen, ¶ms, (yespower_binary_t *)output);
+ if (yespower_tls((unsigned char *)input, inputlen, ¶ms, (yespower_binary_t *)output))
+ abort();
}
diff --git a/src/yespower.h b/src/yespower.h
index f7109ec15..9faaf3fb0 100644
--- a/src/yespower.h
+++ b/src/yespower.h
@@ -37,6 +37,9 @@
extern "C" {
#endif
+/**
+ * yespower_hash() is a Koto addition, not part of yespower proper.
+ */
extern void yespower_hash(const char *input, size_t inputlen, char *output);
/**