As per reqest on mailing list, here's a bugreport for the vista bug. > If libsmbclient is connected to a vista server on port 445, only every > second command will work. Before every command libsmbclient tries to > verify that the server is valid by sending it a SMBkeepalive. However > this is a netbios packet and can't be used on port 445 (smb over tcp). > It seems previous windows version ignored this, vista however > disconnects the client on such an invalid request. > > I changed the smbc_check_server to only do the keepalive when connected > on port 139, sorry for this not being a patch, but I currently don't > have any checked out version of samba. The alternative is to use > cli_echo, but waiting for a roundtrip before trying to do anything > seems overkill. > > The proper solution would be to do a retry on a failed request instead > of the current way if checking connection prior to doing the actual > request. But that is abit to much work for me. > > static int > smbc_check_server(SMBCCTX * context, > SMBCSRV * server) > { > if (server->cli.port == 139) > { > if ( send_keepalive(server->cli.fd) == False ) > return 1; > } > else > { > struct sockaddr addr; > int size = sizeof(addr); > if (getpeername(server->cli.fd, &addr, &size)) > return 1; > } > > > /* connection is ok */ > return 0; > }
this is also an issue with smbd and XP clients.
Should be fixed (for libsmbclient) by check-in 21132. I don't have an environment to test this, however. Please confirm that it is now working for you. Thanks, Derrell
Fix to be included in 3.0.25rc1
marking as fixed.