diff options
| author | Ken Raeburn <raeburn@mit.edu> | 2007-07-27 04:39:21 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 2007-07-27 04:39:21 +0000 |
| commit | 76fdc16a95093e399c43e8597275a5cc95ff4925 (patch) | |
| tree | d6234c9d4ea2a7fe0acf2e3b4bc384176e0ac517 /src/include | |
| parent | 7cedd31c584a59626a749ea609a23c237a82b3ea (diff) | |
| download | krb5-76fdc16a95093e399c43e8597275a5cc95ff4925.tar.gz krb5-76fdc16a95093e399c43e8597275a5cc95ff4925.tar.xz krb5-76fdc16a95093e399c43e8597275a5cc95ff4925.zip | |
Debugged version of patch worked up with Luke
Adds a callback to krb5int_sendto to examine the response and indicate
whether to quit the loop or not. For sendto_kdc, keep going if the
returned error is "service unavailable". Updated all other callers to
pass a null function pointer, which means to always break out of the
loop on any response (the old behavior).
ticket: 3334
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19738 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/k5-int.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/include/k5-int.h b/src/include/k5-int.h index 197dc6367..2b9796078 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -216,6 +216,10 @@ typedef INT64_TYPE krb5_int64; /* required */ #define KDC_ERR_SERVER_NOMATCH 26 /* Requested server and */ /* ticket don't match*/ +#define KDC_ERR_SVC_UNAVAILABLE 29 /* A service is not + * available that is + * required to process the + * request */ /* Application errors */ #define KRB_AP_ERR_BAD_INTEGRITY 31 /* Decrypt integrity check failed */ #define KRB_AP_ERR_TKT_EXPIRED 32 /* Ticket expired */ @@ -498,7 +502,9 @@ krb5_error_code krb5_sendto_kdc (krb5_context, const krb5_data *, krb5_error_code krb5int_sendto (krb5_context context, const krb5_data *message, const struct addrlist *addrs, struct sendto_callback_info* callback_info, krb5_data *reply, struct sockaddr *localaddr, socklen_t *localaddrlen, - struct sockaddr *remoteaddr, socklen_t *remoteaddrlen, int *addr_used); + struct sockaddr *remoteaddr, socklen_t *remoteaddrlen, int *addr_used, + int (*msg_handler)(krb5_context, const krb5_data *, void *), + void *msg_handler_data); krb5_error_code krb5_get_krbhst (krb5_context, const krb5_data *, char *** ); krb5_error_code krb5_free_krbhst (krb5_context, char * const * ); @@ -1874,7 +1880,9 @@ typedef struct _krb5int_access { krb5_error_code (*sendto_udp) (krb5_context, const krb5_data *msg, const struct addrlist *, struct sendto_callback_info*, krb5_data *reply, struct sockaddr *, socklen_t *,struct sockaddr *, - socklen_t *, int *); + socklen_t *, int *, + int (*msg_handler)(krb5_context, const krb5_data *, void *), + void *msg_handler_data); krb5_error_code (*add_host_to_list)(struct addrlist *lp, const char *hostname, int port, int secport, |
