Commit c4569a308c2240d6f2bed0cc10f1e1f0082af751
1 parent
97072052
Exists in
master
and in
3 other branches
Better error codes when the session is connected.
Showing
8 changed files
with
15 additions
and
23 deletions
Show diff stats
src/include/api.h
src/include/lib3270.h
| @@ -595,7 +595,7 @@ | @@ -595,7 +595,7 @@ | ||
| 595 | * @param h Session handle. | 595 | * @param h Session handle. |
| 596 | * @param seconds Seconds to wait for connection. | 596 | * @param seconds Seconds to wait for connection. |
| 597 | * | 597 | * |
| 598 | - * @return 0 for success, EAGAIN if auto-reconnect is in progress, EBUSY if connected, ENOTCONN if connection has failed, -1 on unexpected failure. | 598 | + * @return 0 for success, non zero if fails (sets errno). |
| 599 | * | 599 | * |
| 600 | */ | 600 | */ |
| 601 | LIB3270_EXPORT int lib3270_reconnect(H3270 *h,int seconds); | 601 | LIB3270_EXPORT int lib3270_reconnect(H3270 *h,int seconds); |
src/lib3270/connect.c
| @@ -62,7 +62,7 @@ | @@ -62,7 +62,7 @@ | ||
| 62 | return errno = EAGAIN; | 62 | return errno = EAGAIN; |
| 63 | 63 | ||
| 64 | if(hSession->sock > 0) | 64 | if(hSession->sock > 0) |
| 65 | - return errno = EBUSY; | 65 | + return errno = EISCONN; |
| 66 | 66 | ||
| 67 | if(!(hSession->host.current && hSession->host.srvc)) | 67 | if(!(hSession->host.current && hSession->host.srvc)) |
| 68 | { | 68 | { |
src/lib3270/ctlr.c
| @@ -252,7 +252,7 @@ int lib3270_set_model(H3270 *hSession, const char *model) | @@ -252,7 +252,7 @@ int lib3270_set_model(H3270 *hSession, const char *model) | ||
| 252 | int model_number; | 252 | int model_number; |
| 253 | 253 | ||
| 254 | if(hSession->cstate != LIB3270_NOT_CONNECTED) | 254 | if(hSession->cstate != LIB3270_NOT_CONNECTED) |
| 255 | - return errno = EBUSY; | 255 | + return errno = EISCONN; |
| 256 | 256 | ||
| 257 | strncpy(hSession->full_model_name,"IBM-",LIB3270_FULL_MODEL_NAME_LENGTH); | 257 | strncpy(hSession->full_model_name,"IBM-",LIB3270_FULL_MODEL_NAME_LENGTH); |
| 258 | hSession->model_name = &hSession->full_model_name[4]; | 258 | hSession->model_name = &hSession->full_model_name[4]; |
src/lib3270/ft.c
| @@ -153,7 +153,7 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); | @@ -153,7 +153,7 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); | ||
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | if(!force) | 155 | if(!force) |
| 156 | - return EBUSY; | 156 | + return errno = EBUSY; |
| 157 | 157 | ||
| 158 | // Impatient user or hung host -- just clean up. | 158 | // Impatient user or hung host -- just clean up. |
| 159 | ft_failed(ft, N_("Cancelled by user") ); | 159 | ft_failed(ft, N_("Cancelled by user") ); |
src/lib3270/options.c
| @@ -97,7 +97,7 @@ LIB3270_EXPORT int lib3270_set_color_type(H3270 *hSession, int colortype) | @@ -97,7 +97,7 @@ LIB3270_EXPORT int lib3270_set_color_type(H3270 *hSession, int colortype) | ||
| 97 | CHECK_SESSION_HANDLE(hSession); | 97 | CHECK_SESSION_HANDLE(hSession); |
| 98 | 98 | ||
| 99 | if(hSession->cstate != LIB3270_NOT_CONNECTED) | 99 | if(hSession->cstate != LIB3270_NOT_CONNECTED) |
| 100 | - return errno = EBUSY; | 100 | + return errno = EISCONN; |
| 101 | 101 | ||
| 102 | switch(colortype) | 102 | switch(colortype) |
| 103 | { | 103 | { |
src/lib3270/private.h
| @@ -669,10 +669,10 @@ LIB3270_INTERNAL int check_online_session(H3270 *hSession); | @@ -669,10 +669,10 @@ LIB3270_INTERNAL int check_online_session(H3270 *hSession); | ||
| 669 | LIB3270_INTERNAL int check_offline_session(H3270 *hSession); | 669 | LIB3270_INTERNAL int check_offline_session(H3270 *hSession); |
| 670 | 670 | ||
| 671 | /// @brief Returns -1 if the session is invalid or not online (sets errno). | 671 | /// @brief Returns -1 if the session is invalid or not online (sets errno). |
| 672 | -#define FAIL_IF_NOT_ONLINE(x) if(check_online_session(x)) return -1; | 672 | +#define FAIL_IF_NOT_ONLINE(x) if(check_online_session(x)) return errno; |
| 673 | 673 | ||
| 674 | /// @brief Returns -1 if the session is invalid or online (sets errno). | 674 | /// @brief Returns -1 if the session is invalid or online (sets errno). |
| 675 | -#define FAIL_IF_ONLINE(x) if(check_offline_session(x)) return -1; | 675 | +#define FAIL_IF_ONLINE(x) if(check_offline_session(x)) return errno; |
| 676 | 676 | ||
| 677 | LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); | 677 | LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); |
| 678 | 678 |
src/lib3270/session.c
| @@ -432,17 +432,11 @@ LIB3270_INTERNAL int check_online_session(H3270 *hSession) { | @@ -432,17 +432,11 @@ LIB3270_INTERNAL int check_online_session(H3270 *hSession) { | ||
| 432 | 432 | ||
| 433 | // Is the session valid? | 433 | // Is the session valid? |
| 434 | if(!hSession) | 434 | if(!hSession) |
| 435 | - { | ||
| 436 | - errno = EINVAL; | ||
| 437 | - return -1; | ||
| 438 | - } | 435 | + return errno = EINVAL; |
| 439 | 436 | ||
| 440 | // Is it connected? | 437 | // Is it connected? |
| 441 | if((int) hSession->cstate < (int)LIB3270_CONNECTED_INITIAL) | 438 | if((int) hSession->cstate < (int)LIB3270_CONNECTED_INITIAL) |
| 442 | - { | ||
| 443 | - errno = ENOTCONN; | ||
| 444 | - return -1; | ||
| 445 | - } | 439 | + return errno = ENOTCONN; |
| 446 | 440 | ||
| 447 | return 0; | 441 | return 0; |
| 448 | } | 442 | } |
| @@ -451,17 +445,11 @@ LIB3270_INTERNAL int check_offline_session(H3270 *hSession) { | @@ -451,17 +445,11 @@ LIB3270_INTERNAL int check_offline_session(H3270 *hSession) { | ||
| 451 | 445 | ||
| 452 | // Is the session valid? | 446 | // Is the session valid? |
| 453 | if(!hSession) | 447 | if(!hSession) |
| 454 | - { | ||
| 455 | - errno = EINVAL; | ||
| 456 | - return -1; | ||
| 457 | - } | 448 | + return errno = EINVAL; |
| 458 | 449 | ||
| 459 | // Is it connected? | 450 | // Is it connected? |
| 460 | if((int) hSession->cstate >= (int)LIB3270_CONNECTED_INITIAL) | 451 | if((int) hSession->cstate >= (int)LIB3270_CONNECTED_INITIAL) |
| 461 | - { | ||
| 462 | - errno = EBUSY; | ||
| 463 | - return -1; | ||
| 464 | - } | 452 | + return errno = EISCONN; |
| 465 | 453 | ||
| 466 | return 0; | 454 | return 0; |
| 467 | } | 455 | } |