* locate_kdc.c (struct srv_dns_entry): Moved to k5-int.h.
authorKen Raeburn <raeburn@mit.edu>
Fri, 6 Jun 2003 23:07:55 +0000 (23:07 +0000)
committerKen Raeburn <raeburn@mit.edu>
Fri, 6 Jun 2003 23:07:55 +0000 (23:07 +0000)
(krb5int_make_srv_query_realm): Renamed from make_srv_query_realm.
(krb5int_free_srv_dns_data): New function.
(krb5_locate_srv_dns_1): Use it.

* accessor.c (krb5int_accessor): Fill in make_srv_query_realm and
free_srv_dns_data fields.

ticket: 1550
status: open

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15596 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/os/ChangeLog
src/lib/krb5/os/accessor.c
src/lib/krb5/os/locate_kdc.c

index 81c205665e5b07fbfae4a423fb883cde4da18907..5a0d718a10c7c564659fe02f72777d991b1f78ed 100644 (file)
@@ -1,3 +1,13 @@
+2003-06-06  Ken Raeburn  <raeburn@mit.edu>
+
+       * locate_kdc.c (struct srv_dns_entry): Moved to k5-int.h.
+       (krb5int_make_srv_query_realm): Renamed from make_srv_query_realm.
+       (krb5int_free_srv_dns_data): New function.
+       (krb5_locate_srv_dns_1): Use it.
+
+       * accessor.c (krb5int_accessor): Fill in make_srv_query_realm and
+       free_srv_dns_data fields.
+
 2003-06-05  Ken Raeburn  <raeburn@mit.edu>
 
        * locate_kdc.c (make_srv_query_realm): Punt if strdup fails.
index 04524d7c8d6d576ab2f04e9f89db560a05b6c8b3..3b38e54414333cb3e46b23ad0ab472636bb8637e 100644 (file)
@@ -42,6 +42,13 @@ krb5int_accessor(krb5int_access *internals, krb5_int32 version)
     internals_temp.locate_server = &krb5int_locate_server;
     internals_temp.sendto_udp = &krb5int_sendto;
     internals_temp.add_host_to_list = krb5int_add_host_to_list;
+#ifdef KRB5_DNS_LOOKUP
+    internals_temp.make_srv_query_realm = krb5int_make_srv_query_realm;
+    internals_temp.free_srv_dns_data = krb5int_free_srv_dns_data;
+#else
+    internals_temp.make_srv_query_realm = 0;
+    internals_temp.free_srv_dns_data = 0;
+#endif
 #ifdef KRB5_KRB4_COMPAT
     internals_temp.krb_life_to_time = krb5int_krb_life_to_time;
     internals_temp.krb_time_to_life = krb5int_krb_time_to_life;
index 804dc7aae04b858d0652dbb26bd4bd9872a978aa..aad17e42ceeb9d91379a2f65fe241f89093a9876 100644 (file)
@@ -508,24 +508,29 @@ krb5_locate_srv_conf(krb5_context context, const krb5_data *realm,
  * Lookup a KDC via DNS SRV records
  */
 
-struct srv_dns_entry {
+void krb5int_free_srv_dns_data (struct srv_dns_entry *p)
+{
     struct srv_dns_entry *next;
-    int priority;
-    int weight;
-    unsigned short port;
-    char *host;
-};
+    while (p) {
+       next = p->next;
+       free(p->host);
+       free(p);
+       p = next;
+    }
+}
 
 /* Do DNS SRV query, return results in *answers.
 
    Make best effort to return all the data we can.  On memory or
    decoding errors, just return what we've got.  Always return 0,
    currently.  */
-static krb5_error_code
-make_srv_query_realm(const krb5_data *realm,
-                    const char *service,
-                    const char *protocol,
-                    struct srv_dns_entry **answers)
+#define make_srv_query_realm krb5int_make_srv_query_realm
+
+krb5_error_code
+krb5int_make_srv_query_realm(const krb5_data *realm,
+                            const char *service,
+                            const char *protocol,
+                            struct srv_dns_entry **answers)
 {
     union {
         unsigned char bytes[2048];
@@ -776,15 +781,7 @@ krb5_locate_srv_dns_1 (const krb5_data *realm,
     fprintf (stderr, "[end]\n");
 #endif
 
-    for (entry = head; entry != NULL; ) {
-       struct srv_dns_entry *srv;
-       free(entry->host);
-        entry->host = NULL;
-       srv = entry;
-       entry = entry->next;
-       free(srv);
-    }
-
+    krb5int_free_srv_dns_data(head);
     return code;
 }
 #endif /* KRB5_DNS_LOOKUP */