]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
(__xdr_ypresp_all): Call callback function for errors, too, like Solaris does.
authorUlrich Drepper <drepper@redhat.com>
Sat, 20 Nov 1999 04:58:24 +0000 (04:58 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 20 Nov 1999 04:58:24 +0000 (04:58 +0000)
nis/ypclnt.c

index cfda29a668d36a44901b546bf97b7c6003e08428..af489fd467627ce3f6838f226b9695bc8f073e6a 100644 (file)
@@ -628,6 +628,9 @@ __xdr_ypresp_all (XDR *xdrs, u_long *objp)
            int keylen = resp.ypresp_all_u.val.key.keydat_len;
            int vallen = resp.ypresp_all_u.val.val.valdat_len;
 
+           /* XXX We are not allowed to modify the key and val data.
+              But I don't know if all other code will continue to work,
+              so we will fix this for glibc 2.2 <kukuk@suse.de> */
            *objp = YP_TRUE;
            memcpy (key, resp.ypresp_all_u.val.key.keydat_val, keylen);
            key[keylen] = '\0';
@@ -639,14 +642,13 @@ __xdr_ypresp_all (XDR *xdrs, u_long *objp)
              return TRUE;
          }
          break;
-       case YP_NOMORE:
-         *objp = YP_NOMORE;
-         xdr_free ((xdrproc_t) xdr_ypresp_all, (char *) &resp);
-         return TRUE;
-         break;
        default:
          *objp = resp.ypresp_all_u.val.stat;
          xdr_free ((xdrproc_t) xdr_ypresp_all, (char *) &resp);
+         /* Sun says we don't need to make this call, but must return
+            immediatly. Since Solaris makes this call, we will call
+            the callback function, too. */
+         (*ypall_foreach) (*objp, NULL, 0, NULL, 0, ypall_data);
          return TRUE;
        }
     }