openldap: only part of LDAP query results received
Introduced with commit 65d141e6da5c6003a1592bbc87ee550b0ad75c2f Closes #440
This commit is contained in:
parent
c184a5c6bc
commit
c979a3d0c4
@ -446,6 +446,7 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
|
|||||||
ent = ldap_next_message(li->ld, ent)) {
|
ent = ldap_next_message(li->ld, ent)) {
|
||||||
struct berval bv, *bvals, **bvp = &bvals;
|
struct berval bv, *bvals, **bvp = &bvals;
|
||||||
int binary = 0, msgtype;
|
int binary = 0, msgtype;
|
||||||
|
CURLcode writeerr;
|
||||||
|
|
||||||
msgtype = ldap_msgtype(ent);
|
msgtype = ldap_msgtype(ent);
|
||||||
if(msgtype == LDAP_RES_SEARCH_RESULT) {
|
if(msgtype == LDAP_RES_SEARCH_RESULT) {
|
||||||
@ -485,18 +486,24 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
|
|||||||
*err = CURLE_RECV_ERROR;
|
*err = CURLE_RECV_ERROR;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
|
||||||
bv.bv_len);
|
bv.bv_len);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
data->req.bytecount += bv.bv_len + 5;
|
data->req.bytecount += bv.bv_len + 5;
|
||||||
|
|
||||||
for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp);
|
for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp);
|
||||||
@ -513,18 +520,24 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
|
|||||||
|
|
||||||
for(i=0; bvals[i].bv_val != NULL; i++) {
|
for(i=0; bvals[i].bv_val != NULL; i++) {
|
||||||
int binval = 0;
|
int binval = 0;
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
|
||||||
bv.bv_len);
|
bv.bv_len);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
return -1;
|
*err = writeerr;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)":", 1);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)":", 1);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
return -1;
|
*err = writeerr;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
data->req.bytecount += bv.bv_len + 2;
|
data->req.bytecount += bv.bv_len + 2;
|
||||||
|
|
||||||
if(!binary) {
|
if(!binary) {
|
||||||
@ -558,47 +571,62 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
|
|||||||
*err = error;
|
*err = error;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)": ", 2);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY,
|
||||||
if(*err)
|
(char *)": ", 2);
|
||||||
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
data->req.bytecount += 2;
|
data->req.bytecount += 2;
|
||||||
if(val_b64_sz > 0) {
|
if(val_b64_sz > 0) {
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, val_b64,
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, val_b64,
|
||||||
val_b64_sz);
|
val_b64_sz);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
free(val_b64);
|
free(val_b64);
|
||||||
data->req.bytecount += val_b64_sz;
|
data->req.bytecount += val_b64_sz;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)" ", 1);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)" ", 1);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, bvals[i].bv_val,
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, bvals[i].bv_val,
|
||||||
bvals[i].bv_len);
|
bvals[i].bv_len);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
data->req.bytecount += bvals[i].bv_len + 1;
|
data->req.bytecount += bvals[i].bv_len + 1;
|
||||||
}
|
}
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
data->req.bytecount++;
|
data->req.bytecount++;
|
||||||
}
|
}
|
||||||
ber_memfree(bvals);
|
ber_memfree(bvals);
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
data->req.bytecount++;
|
data->req.bytecount++;
|
||||||
}
|
}
|
||||||
*err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
|
writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
|
||||||
if(*err)
|
if(writeerr) {
|
||||||
|
*err = writeerr;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
data->req.bytecount++;
|
data->req.bytecount++;
|
||||||
ber_free(ber, 0);
|
ber_free(ber, 0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user