diff options
author | Christopher R. Hertel <crh@samba.org> | 2002-04-22 03:08:33 +0000 |
---|---|---|
committer | Christopher R. Hertel <crh@samba.org> | 2002-04-22 03:08:33 +0000 |
commit | 0fb9ea9fa45d28ea6660bab09998e704fd6502f8 (patch) | |
tree | 52e792fb4d0ed1f5d2d976fab4ed8f46e3c06bf2 /source3/libsmb | |
parent | 86cf3b9f11a7ca756079ed2f9248415e13adb7f7 (diff) | |
download | samba-0fb9ea9fa45d28ea6660bab09998e704fd6502f8.tar.gz samba-0fb9ea9fa45d28ea6660bab09998e704fd6502f8.tar.bz2 samba-0fb9ea9fa45d28ea6660bab09998e704fd6502f8.zip |
My seven-year-old daughter calls me 'Captain Pedantic'. I don't know which
is freakier... the name or the fact that a seven-year-old knows what it
means.
Small change to correct the value we place in the DGM_LENGTH field of
NBT Datagram messages. We have been counting the full datagram, but it's
fairly clear in the RFCs that we should only count the source name,
destination name, and payload. We've been overcharging by 14 bytes
(the size of the NBT DGM header).
This fix brings us in line with what Windows does, and what the RFCs
say should be done. I'm a little surprised that this didn't cause any
bugs or error messages. I guess no one actually checks this field.
(This used to be commit 3156c020e5b6f12a448d58669977ad4449789460)
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/nmblib.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source3/libsmb/nmblib.c b/source3/libsmb/nmblib.c index c78946fa09..9a37b4252a 100644 --- a/source3/libsmb/nmblib.c +++ b/source3/libsmb/nmblib.c @@ -766,6 +766,14 @@ static BOOL send_udp(int fd,char *buf,int len,struct in_addr ip,int port) XXXX This currently doesn't handle packets too big for one datagram. It should split them and use the packet_offset, more and first flags to handle the fragmentation. Yuck. + + [...but it isn't clear that we would ever need to send a + a fragmented NBT Datagram. The IP layer does its own + fragmentation to ensure that messages can fit into the path + MTU. It *is* important to be able to receive and rebuild + fragmented NBT datagrams, just in case someone out there + really has implemented this 'feature'. crh -)------ ] + ******************************************************************/ static int build_dgram(char *buf,struct packet_struct *p) { @@ -795,8 +803,11 @@ static int build_dgram(char *buf,struct packet_struct *p) memcpy(ubuf+offset,dgram->data,dgram->datasize); offset += dgram->datasize; - /* automatically set the dgm_length */ - dgram->header.dgm_length = offset; + /* automatically set the dgm_length + * NOTE: RFC1002 says the dgm_length does *not* + * include the fourteen-byte header. crh + */ + dgram->header.dgm_length = (offset - 14); RSSVAL(ubuf,10,dgram->header.dgm_length); return(offset); |