packet_in_blob.data = blob.data + 4;
packet_in_blob.length = blob.length - 4;
- ndr_err = ndr_pull_struct_blob(&packet_in_blob, call, &call->req_packet,
+ ndr_err = ndr_pull_struct_blob(&packet_in_blob, call,
+ lp_iconv_convenience(wreplconn->service->task->lp_ctx),
+ &call->req_packet,
(ndr_pull_flags_fn_t)ndr_pull_wrepl_packet);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
return ndr_map_error2ntstatus(ndr_err);
/* and now encode the reply */
packet_out_wrap.packet = call->rep_packet;
- ndr_err = ndr_push_struct_blob(&packet_out_blob, call, &packet_out_wrap,
+ ndr_err = ndr_push_struct_blob(&packet_out_blob, call,
+ lp_iconv_convenience(wreplconn->service->task->lp_ctx),
+ &packet_out_wrap,
(ndr_push_flags_fn_t)ndr_push_wrepl_wrap);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
return ndr_map_error2ntstatus(ndr_err);
wrepl_in->service = service;
wrepl_in->partner = partner;
- status = stream_new_connection_merge(service->task->event_ctx, model_ops,
+ status = stream_new_connection_merge(service->task->event_ctx, service->task->lp_ctx, model_ops,
sock, &wreplsrv_stream_ops, service->task->msg_ctx,
wrepl_in, &conn);
NT_STATUS_NOT_OK_RETURN(status);
}
if (lp_interfaces(lp_ctx) && lp_bind_interfaces_only(lp_ctx)) {
- int num_interfaces = iface_count();
+ int num_interfaces;
int i;
+ struct interface *ifaces;
+
+ load_interfaces(task, lp_interfaces(lp_ctx), &ifaces);
+
+ num_interfaces = iface_count(ifaces);
/* We have been given an interfaces line, and been
told to only bind to those interfaces. Create a
socket per interface and bind to only these.
*/
for(i = 0; i < num_interfaces; i++) {
- address = iface_n_ip(i);
- status = stream_setup_socket(task->event_ctx, model_ops, &wreplsrv_stream_ops,
+ address = iface_n_ip(ifaces, i);
+ status = stream_setup_socket(task->event_ctx,
+ task->lp_ctx, model_ops,
+ &wreplsrv_stream_ops,
"ipv4", address, &port,
lp_socket_options(task->lp_ctx),
service);
}
} else {
address = lp_socket_address(lp_ctx);
- status = stream_setup_socket(task->event_ctx, model_ops, &wreplsrv_stream_ops,
+ status = stream_setup_socket(task->event_ctx, task->lp_ctx,
+ model_ops, &wreplsrv_stream_ops,
"ipv4", address, &port, lp_socket_options(task->lp_ctx),
service);
if (!NT_STATUS_IS_OK(status)) {