diff --git a/src/include/lib3270/filetransfer.h b/src/include/lib3270/filetransfer.h index 70e02b5..578a1bb 100644 --- a/src/include/lib3270/filetransfer.h +++ b/src/include/lib3270/filetransfer.h @@ -197,6 +197,16 @@ LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *session, unsigned short sz); /** + * @brief Set all FT callbacks to default valides. + * + * @param hSession TN3270 session to reset. + * + * @return 0 if hSession has a valid FT session, non zero if not (sets errno). + * + */ + LIB3270_EXPORT int lib3270_reset_ft_callbacks(H3270 *hSession); + + /** * @brief Translate IND$FILE response. * * @param msg Message received. diff --git a/src/lib3270/ft.c b/src/lib3270/ft.c index cf9543c..3f3b897 100644 --- a/src/lib3270/ft.c +++ b/src/lib3270/ft.c @@ -315,15 +315,6 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); ftHandle->dft = dft; ftHandle->quadrant = -1; - ftHandle->cbk.complete = def_complete; - ftHandle->cbk.failed = def_failed; - ftHandle->cbk.message = def_message; - ftHandle->cbk.update = def_update; - ftHandle->cbk.running = def_running; - ftHandle->cbk.aborting = def_aborting; - ftHandle->cbk.state_changed = def_state_changed; - - // Setup file transfer charset. memcpy(&ftHandle->charset,&session->charset,sizeof(struct lib3270_charset)); @@ -343,9 +334,31 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); session->ft = ftHandle; + lib3270_reset_ft_callbacks(session); + return ftHandle; } + LIB3270_EXPORT int lib3270_reset_ft_callbacks(H3270 *hSession) + { + CHECK_SESSION_HANDLE(hSession); + + if(!hSession->ft) + { + return errno = EINVAL; + } + + hSession->ft->cbk.complete = def_complete; + hSession->ft->cbk.failed = def_failed; + hSession->ft->cbk.message = def_message; + hSession->ft->cbk.update = def_update; + hSession->ft->cbk.running = def_running; + hSession->ft->cbk.aborting = def_aborting; + hSession->ft->cbk.state_changed = def_state_changed; + + return 0; + } + LIB3270_EXPORT void lib3270_ft_set_user_data(H3270 *hSession, void *ptr) { H3270FT * ft; @@ -654,7 +667,6 @@ LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *ses } - // Process a protocol-generated abort. void ft_aborting(H3270FT *h, const char *reason) { -- libgit2 0.21.2