diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-06-26 13:02:33 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-06-26 13:02:33 -0700 |
commit | f33f3fcb72590293f1ac3c3391b0140732ae8658 (patch) | |
tree | e1cc03dbe75a9fc9f1bf9bcdd955b40efe5b760b /controller/SqliteNetworkController.cpp | |
parent | 57c7992c785ab2f69fb2ddffd6f48bfebd96cab8 (diff) | |
parent | 3eca5d9c2933bc365de5b78e20976ccae360296e (diff) | |
download | infinitytier-f33f3fcb72590293f1ac3c3391b0140732ae8658.tar.gz infinitytier-f33f3fcb72590293f1ac3c3391b0140732ae8658.zip |
Merge pull request #196 from keesbos/fixes
Fixes for controller
Diffstat (limited to 'controller/SqliteNetworkController.cpp')
-rw-r--r-- | controller/SqliteNetworkController.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index d77e06d8..eb8e399b 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -1158,7 +1158,14 @@ unsigned int SqliteNetworkController::_doCPGet( sqlite3_bind_text(_sGetIpAssignmentsForNode2,2,addrs,10,SQLITE_STATIC); bool firstIp = true; while (sqlite3_step(_sGetIpAssignmentsForNode2) == SQLITE_ROW) { - InetAddress ip((const void *)sqlite3_column_blob(_sGetIpAssignmentsForNode2,0),(sqlite3_column_int(_sGetIpAssignmentsForNode2,2) == 6) ? 16 : 4,(unsigned int)sqlite3_column_int(_sGetIpAssignmentPools2,1)); + int ipversion = sqlite3_column_int(_sGetIpAssignmentsForNode2,2); + char ipBlob[16]; + memcpy(ipBlob,(const void *)sqlite3_column_blob(_sGetIpAssignmentsForNode2,0),16); + InetAddress ip( + (const void *)(ipversion == 6 ? ipBlob : &ipBlob[12]), + (ipversion == 6 ? 16 : 4), + (unsigned int)sqlite3_column_int(_sGetIpAssignmentsForNode2,1) + ); responseBody.append(firstIp ? "\"" : ",\""); firstIp = false; responseBody.append(_jsonEscape(ip.toString())); |