+ if (q->auth) {
+ if (q->auth->which == Z_IdAuthentication_open) {
+ char *openpass = xstrdup (q->auth->u.open);
+ char *cp = strchr (openpass, '/');
+ if (cp) {
+ *cp = '\0';
+ user = nmem_strdup (odr_getmem (q->stream), openpass);
+ passwd = nmem_strdup (odr_getmem (q->stream), cp + 1);
+ }
+ xfree(openpass);
+ } else if (q->auth->which == Z_IdAuthentication_idPass) {
+ user = q->auth->u.idPass->userId;
+ passwd = q->auth->u.idPass->password;
+ }
+ /* ### some code paths have user/password unassigned here */
+ hv_store(href, "USER", 4, newSVpv(user, 0), 0);
+ hv_store(href, "PASS", 4, newSVpv(passwd, 0), 0);
+ }