summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2007-07-27 04:39:21 +0000
committerKen Raeburn <raeburn@mit.edu>2007-07-27 04:39:21 +0000
commit76fdc16a95093e399c43e8597275a5cc95ff4925 (patch)
treed6234c9d4ea2a7fe0acf2e3b4bc384176e0ac517 /src/include
parent7cedd31c584a59626a749ea609a23c237a82b3ea (diff)
downloadkrb5-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.h12
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,