svn commit: samba r12958 - in
branches/SAMBA_4_0/source/nbt_server/dgram: .
metze at samba.org
metze at samba.org
Mon Jan 16 14:01:35 GMT 2006
Author: metze
Date: 2006-01-16 14:01:34 +0000 (Mon, 16 Jan 2006)
New Revision: 12958
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12958
Log:
don't bind to '255.255.255.255'
fix bug #3411
metze
Modified:
branches/SAMBA_4_0/source/nbt_server/dgram/request.c
Changeset:
Modified: branches/SAMBA_4_0/source/nbt_server/dgram/request.c
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/dgram/request.c 2006-01-16 05:47:43 UTC (rev 12957)
+++ branches/SAMBA_4_0/source/nbt_server/dgram/request.c 2006-01-16 14:01:34 UTC (rev 12958)
@@ -56,7 +56,7 @@
*/
NTSTATUS nbtd_dgram_setup(struct nbtd_interface *iface, const char *bind_address)
{
- struct nbt_dgram_socket *bcast_dgmsock;
+ struct nbt_dgram_socket *bcast_dgmsock = NULL;
struct nbtd_server *nbtsrv = iface->nbtsrv;
struct socket_address *bcast_addr, *bind_addr;
NTSTATUS status;
@@ -68,32 +68,32 @@
return NT_STATUS_NO_MEMORY;
}
- /* listen for broadcasts on port 138 */
- bcast_dgmsock = nbt_dgram_socket_init(iface, nbtsrv->task->event_ctx);
- if (!bcast_dgmsock) {
- talloc_free(tmp_ctx);
- return NT_STATUS_NO_MEMORY;
- }
+ if (strcmp("0.0.0.0", iface->netmask) != 0) {
+ /* listen for broadcasts on port 138 */
+ bcast_dgmsock = nbt_dgram_socket_init(iface, nbtsrv->task->event_ctx);
+ if (!bcast_dgmsock) {
+ talloc_free(tmp_ctx);
+ return NT_STATUS_NO_MEMORY;
+ }
- bcast_addr = socket_address_from_strings(tmp_ctx, bcast_dgmsock->sock->backend_name,
- iface->bcast_address,
- lp_dgram_port());
+ bcast_addr = socket_address_from_strings(tmp_ctx, bcast_dgmsock->sock->backend_name,
+ iface->bcast_address, lp_dgram_port());
+ if (!bcast_addr) {
+ talloc_free(tmp_ctx);
+ return NT_STATUS_NO_MEMORY;
+ }
- status = socket_listen(bcast_dgmsock->sock, bcast_addr, 0, 0);
- if (!NT_STATUS_IS_OK(status)) {
- talloc_free(tmp_ctx);
- DEBUG(0,("Failed to bind to %s:%d - %s\n",
- iface->bcast_address, lp_dgram_port(), nt_errstr(status)));
- return status;
+ status = socket_listen(bcast_dgmsock->sock, bcast_addr, 0, 0);
+ if (!NT_STATUS_IS_OK(status)) {
+ talloc_free(tmp_ctx);
+ DEBUG(0,("Failed to bind to %s:%d - %s\n",
+ iface->bcast_address, lp_dgram_port(), nt_errstr(status)));
+ return status;
+ }
+
+ dgram_set_incoming_handler(bcast_dgmsock, dgram_request_handler, iface);
}
- talloc_free(bcast_addr);
-
- dgram_set_incoming_handler(bcast_dgmsock, dgram_request_handler, iface);
- bind_addr = socket_address_from_strings(tmp_ctx, bcast_dgmsock->sock->backend_name,
- bind_address,
- lp_dgram_port());
-
/* listen for unicasts on port 138 */
iface->dgmsock = nbt_dgram_socket_init(iface, nbtsrv->task->event_ctx);
if (!iface->dgmsock) {
@@ -101,6 +101,13 @@
return NT_STATUS_NO_MEMORY;
}
+ bind_addr = socket_address_from_strings(tmp_ctx, iface->dgmsock->sock->backend_name,
+ bind_address, lp_dgram_port());
+ if (!bind_addr) {
+ talloc_free(tmp_ctx);
+ return NT_STATUS_NO_MEMORY;
+ }
+
status = socket_listen(iface->dgmsock->sock, bind_addr, 0, 0);
if (!NT_STATUS_IS_OK(status)) {
talloc_free(tmp_ctx);
@@ -108,23 +115,23 @@
bind_address, lp_dgram_port(), nt_errstr(status)));
return status;
}
- talloc_free(bind_addr);
dgram_set_incoming_handler(iface->dgmsock, dgram_request_handler, iface);
talloc_free(tmp_ctx);
-
for (i=0;i<ARRAY_SIZE(mailslot_handlers);i++) {
/* note that we don't need to keep the pointer
to the dgmslot around - the callback is all
we need */
struct dgram_mailslot_handler *dgmslot;
- dgmslot = dgram_mailslot_listen(bcast_dgmsock,
+ if (bcast_dgmsock) {
+ dgmslot = dgram_mailslot_listen(bcast_dgmsock,
mailslot_handlers[i].mailslot_name,
mailslot_handlers[i].handler, iface);
- NT_STATUS_HAVE_NO_MEMORY(dgmslot);
+ NT_STATUS_HAVE_NO_MEMORY(dgmslot);
+ }
dgmslot = dgram_mailslot_listen(iface->dgmsock,
mailslot_handlers[i].mailslot_name,
More information about the samba-cvs
mailing list