From cbd0008f481b2dc9dea4ecf5942e8d411accae5b Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Fri, 19 Jul 2019 07:03:58 +0200 Subject: [PATCH] - IEC 61850 client: fixed - file transfer doesn't release outstanding connection --- src/iec61850/client/ied_connection.c | 8 ++++---- src/mms/inc/mms_server.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/iec61850/client/ied_connection.c b/src/iec61850/client/ied_connection.c index ac973639..a78e2b50 100644 --- a/src/iec61850/client/ied_connection.c +++ b/src/iec61850/client/ied_connection.c @@ -1958,7 +1958,7 @@ mmsConnectionFileReadHandler (uint32_t invokeId, void* parameter, MmsError mmsEr handler(call->specificParameter2.getFileInfo.originalInvokeId, call->callbackParameter, err, invokeId, NULL, 0, false); /* close file */ - MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); + call->invokeId = MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); if (mmsError != MMS_ERROR_NONE) iedConnection_releaseOutstandingCall(self, call); @@ -1968,7 +1968,7 @@ mmsConnectionFileReadHandler (uint32_t invokeId, void* parameter, MmsError mmsEr if ((moreFollows == false) || (cont == false)) { /* close file */ - MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); + call->invokeId = MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); if (mmsError != MMS_ERROR_NONE) iedConnection_releaseOutstandingCall(self, call); @@ -1985,7 +1985,7 @@ mmsConnectionFileReadHandler (uint32_t invokeId, void* parameter, MmsError mmsEr handler(invokeId, call->callbackParameter, err, invokeId, NULL, 0, false); /* close file */ - MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); + call->invokeId = MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); if (mmsError != MMS_ERROR_NONE) { iedConnection_releaseOutstandingCall(self, call); @@ -2032,7 +2032,7 @@ mmsConnectionFileOpenHandler (uint32_t invokeId, void* parameter, MmsError mmsEr handler(invokeId, call->callbackParameter, err, invokeId, NULL, 0, false); /* close file */ - MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); + call->invokeId = MmsConnection_fileCloseAsync(self->connection, &mmsError, frsmId, mmsConnectionFileCloseHandler, self); if (mmsError != MMS_ERROR_NONE) iedConnection_releaseOutstandingCall(self, call); diff --git a/src/mms/inc/mms_server.h b/src/mms/inc/mms_server.h index 7f827f7b..af7df95a 100644 --- a/src/mms/inc/mms_server.h +++ b/src/mms/inc/mms_server.h @@ -209,7 +209,7 @@ typedef MmsError (*MmsFileAccessHandler) (void* parameter, MmsServerConnection c * \param handler the callback handler function * \param parameter user provided parameter that is passed to the callback handler */ -LIB61850_INTERNAL void +LIB61850_API void MmsServer_installFileAccessHandler(MmsServer self, MmsFileAccessHandler handler, void* parameter); /**