Currently we have 3 valid results, and we're about to add a fourth. Signed-off-by: Kevin Cernekee <cernekee at gmail.com> --- auth.c | 12 ++++++------ http.c | 4 ++-- main.c | 4 ++-- openconnect.h | 5 +++++ 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/auth.c b/auth.c index b6b9698..17f80ef 100644 --- a/auth.c +++ b/auth.c @@ -581,9 +581,9 @@ int parse_xml_response(struct openconnect_info *vpninfo, char *response, struct /* Return value: * < 0, on error - * = 0, when form parsed and POST required - * = 1, when response was cancelled by user - * = 2, when form indicates that login was already successful + * = OC_FORM_RESULT_OK (0), when form parsed and POST required + * = OC_FORM_RESULT_CANCELLED, when response was cancelled by user + * = __OC_FORM_RESULT_LOGGEDIN, when form indicates that login was already successful */ int handle_auth_form(struct openconnect_info *vpninfo, struct oc_auth_form *form, char *request_body, int req_len, const char **method, @@ -593,7 +593,7 @@ int handle_auth_form(struct openconnect_info *vpninfo, struct oc_auth_form *form struct vpn_option *opt, *next; if (!strcmp(form->auth_id, "success")) - return 2; + return __OC_FORM_RESULT_LOGGEDIN; if (vpninfo->nopasswd) { vpn_progress(vpninfo, PRG_ERR, @@ -611,7 +611,7 @@ int handle_auth_form(struct openconnect_info *vpninfo, struct oc_auth_form *form free(opt); } vpninfo->cookies = NULL; - return 0; + return OC_FORM_RESULT_OK; } if (!form->opts) { if (form->message) @@ -625,7 +625,7 @@ int handle_auth_form(struct openconnect_info *vpninfo, struct oc_auth_form *form ret = vpninfo->process_auth_form(vpninfo->cbdata, form); else { vpn_progress(vpninfo, PRG_ERR, _("No form handler; cannot authenticate.\n")); - ret = 1; + ret = OC_FORM_RESULT_CANCELLED; } if (ret) return ret; diff --git a/http.c b/http.c index 3a5c2c6..fa803c5 100644 --- a/http.c +++ b/http.c @@ -1181,9 +1181,9 @@ int openconnect_obtain_cookie(struct openconnect_info *vpninfo) request_body[0] = 0; result = handle_auth_form(vpninfo, form, request_body, sizeof(request_body), &method, &request_body_type); - if (result < 0 || result == 1) + if (result < 0 || result == OC_FORM_RESULT_CANCELLED) goto out; - if (result == 2) + if (result == __OC_FORM_RESULT_LOGGEDIN) break; result = do_https_request(vpninfo, method, request_body_type, request_body, diff --git a/main.c b/main.c index e0114d2..16c1824 100644 --- a/main.c +++ b/main.c @@ -1247,7 +1247,7 @@ static int process_auth_form(void *_vpninfo, password = NULL; } - return 0; + return OC_FORM_RESULT_OK; err: for (opt = form->opts; opt; opt = opt->next) { @@ -1257,7 +1257,7 @@ static int process_auth_form(void *_vpninfo, opt->value = NULL; } } - return -EINVAL; + return OC_FORM_RESULT_ERR; } static void init_token(struct openconnect_info *vpninfo, diff --git a/openconnect.h b/openconnect.h index d48bc25..8f601cb 100644 --- a/openconnect.h +++ b/openconnect.h @@ -93,6 +93,11 @@ #define OC_FORM_OPT_HIDDEN 4 #define OC_FORM_OPT_TOKEN 5 +#define OC_FORM_RESULT_ERR -1 +#define OC_FORM_RESULT_OK 0 +#define OC_FORM_RESULT_CANCELLED 1 +#define __OC_FORM_RESULT_LOGGEDIN 255 /* internal library use only */ + /* char * fields are static (owned by XML parser) and don't need to be freed by the form handling code -- except for value, which for TEXT and PASSWORD options is allocated by process_form() when -- 1.7.9.5