gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] branch master updated: Avoid stack-trace for double download


From: gnunet
Subject: [libeufin] branch master updated: Avoid stack-trace for double download of accounts.
Date: Fri, 15 Jan 2021 16:54:46 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository libeufin.

The following commit(s) were added to refs/heads/master by this push:
     new 1ce76c5  Avoid stack-trace for double download of accounts.
1ce76c5 is described below

commit 1ce76c52f15995d869f62e212f067e53e9369785
Author: ms <ms@taler.net>
AuthorDate: Fri Jan 15 16:53:28 2021 +0100

    Avoid stack-trace for double download of accounts.
---
 cli/bin/libeufin-cli                                          |  3 +--
 nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt | 11 ++++++++---
 .../src/main/kotlin/tech/libeufin/nexus/server/NexusServer.kt |  8 ++------
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/cli/bin/libeufin-cli b/cli/bin/libeufin-cli
index 7cc0b42..262169f 100755
--- a/cli/bin/libeufin-cli
+++ b/cli/bin/libeufin-cli
@@ -320,8 +320,7 @@ def list_offered_bank_accounts(obj, connection_name):
         print("Could not reach nexus at " + url)
         exit(1)
 
-
-    tell_user(resp)
+    tell_user(resp, withsuccess=True)
 
 @accounts.command(help="Schedules a new task")
 @click.argument("account-name")
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt
index da2260c..5e6fc65 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsNexus.kt
@@ -40,7 +40,9 @@ import io.ktor.response.respond
 import io.ktor.response.respondText
 import io.ktor.routing.Route
 import io.ktor.routing.post
+import org.jetbrains.exposed.sql.and
 import org.jetbrains.exposed.sql.insert
+import org.jetbrains.exposed.sql.select
 import org.jetbrains.exposed.sql.statements.api.ExposedBlob
 import org.jetbrains.exposed.sql.transactions.transaction
 import tech.libeufin.nexus.*
@@ -333,9 +335,7 @@ private fun getEbicsSubscriberDetails(bankConnectionId: 
String): EbicsClientSubs
 }
 
 suspend fun ebicsFetchAccounts(connId: String, client: HttpClient) {
-    val subscriberDetails = transaction {
-        getEbicsSubscriberDetails(connId)
-    }
+    val subscriberDetails = transaction { getEbicsSubscriberDetails(connId) }
     val response = doEbicsDownloadTransaction(
         client, subscriberDetails, "HTD", EbicsStandardOrderParams()
     )
@@ -352,6 +352,11 @@ suspend fun ebicsFetchAccounts(connId: String, client: 
HttpClient) {
             )
             transaction {
                 payload.value.partnerInfo.accountInfoList?.forEach { 
accountInfo ->
+                    val isDuplicate = OfferedBankAccountsTable.select {
+                        OfferedBankAccountsTable.bankConnection eq connId and (
+                                OfferedBankAccountsTable.offeredAccountId eq 
accountInfo.id)
+                    }.firstOrNull()
+                    if (isDuplicate != null) return@forEach
                     OfferedBankAccountsTable.insert { newRow ->
                         newRow[accountHolder] = accountInfo.accountHolder ?: 
"NOT GIVEN"
                         newRow[iban] = 
accountInfo.accountNumberList?.filterIsInstance<EbicsTypes.GeneralAccountNumber>()
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/server/NexusServer.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/server/NexusServer.kt
index 878f7e8..096ff27 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/server/NexusServer.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/server/NexusServer.kt
@@ -46,7 +46,6 @@ import io.ktor.response.respondText
 import io.ktor.routing.*
 import io.ktor.server.engine.embeddedServer
 import io.ktor.server.netty.Netty
-import io.ktor.util.error
 import io.ktor.utils.io.ByteReadChannel
 import io.ktor.utils.io.jvm.javaio.toByteReadChannel
 import io.ktor.utils.io.jvm.javaio.toInputStream
@@ -212,11 +211,8 @@ fun createLoopbackBankConnection(bankConnectionName: 
String, user: NexusUserEnti
 }
 
 fun requireBankConnectionInternal(connId: String): NexusBankConnectionEntity {
-    val conn = transaction { NexusBankConnectionEntity.findById(connId) }
-    if (conn == null) {
-        throw NexusError(HttpStatusCode.NotFound, "bank connection '$connId' 
not found")
-    }
-    return conn
+    return transaction { NexusBankConnectionEntity.findById(connId) }
+        ?: throw NexusError(HttpStatusCode.NotFound, "bank connection 
'$connId' not found")
 }
 
 fun requireBankConnection(call: ApplicationCall, parameterKey: String): 
NexusBankConnectionEntity {

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]