Changeset 746 for vendor/current/libcli/cldap/cldap.c
- Timestamp:
- Nov 27, 2012, 4:56:06 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/libcli/cldap/cldap.c
r740 r746 274 274 DLIST_REMOVE(c->searches.list, search); 275 275 276 if (!cldap_recvfrom_setup(c)) { 277 goto nomem; 278 } 276 cldap_recvfrom_setup(c); 279 277 280 278 tevent_req_done(search->req); 281 talloc_free(in);282 279 return true; 283 280 … … 287 284 status = map_nt_error_from_unix(in->recv_errno); 288 285 nterror: 286 TALLOC_FREE(in); 289 287 /* in connected mode the first pending search gets the error */ 290 288 if (!c->connected) { … … 295 293 goto done; 296 294 } 295 cldap_recvfrom_setup(c); 297 296 tevent_req_nterror(c->searches.list->req, status); 297 return true; 298 298 done: 299 talloc_free(in);299 TALLOC_FREE(in); 300 300 return false; 301 301 } … … 314 314 NTSTATUS status; 315 315 int ret; 316 const char *fam = NULL; 317 318 if (local_addr == NULL && remote_addr == NULL) { 319 return NT_STATUS_INVALID_PARAMETER_MIX; 320 } 321 322 if (remote_addr) { 323 bool is_ipv4; 324 bool is_ipv6; 325 326 is_ipv4 = tsocket_address_is_inet(remote_addr, "ipv4"); 327 is_ipv6 = tsocket_address_is_inet(remote_addr, "ipv6"); 328 329 if (is_ipv4) { 330 fam = "ipv4"; 331 } else if (is_ipv6) { 332 fam = "ipv6"; 333 } else { 334 return NT_STATUS_INVALID_ADDRESS; 335 } 336 } 316 337 317 338 c = talloc_zero(mem_ctx, struct cldap_socket); … … 330 351 331 352 if (!local_addr) { 332 /* we use ipv4 here instead of ip, as otherwise we end 333 up with a PF_INET6 socket, and sendto() for ipv4 334 addresses will fail. That breaks cldap name 335 resolution for winbind to IPv4 hosts. */ 336 ret = tsocket_address_inet_from_strings(c, "ipv4", 353 /* 354 * Here we know the address family of the remote address. 355 */ 356 if (fam == NULL) { 357 return NT_STATUS_INVALID_PARAMETER_MIX; 358 } 359 360 ret = tsocket_address_inet_from_strings(c, fam, 337 361 NULL, 0, 338 362 &any);
Note:
See TracChangeset
for help on using the changeset viewer.