diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-06-03 13:31:27 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:17:29 -0500 |
commit | 665480ffed385abb74bc44b6f376547a6d465db9 (patch) | |
tree | 081894ed56b0c9a292a6c1cdf7717dc9afef6c25 /source4/libcli | |
parent | a8feef8d3647d25b3f5f572139acb1bab361055e (diff) | |
download | samba-665480ffed385abb74bc44b6f376547a6d465db9.tar.gz samba-665480ffed385abb74bc44b6f376547a6d465db9.tar.bz2 samba-665480ffed385abb74bc44b6f376547a6d465db9.zip |
r7229: use socket_pending() to get rid of the max packet size limits in the
nbt and dgram layers
(This used to be commit 2a9efbdae638a655999e07a7c3da97fd20dc056c)
Diffstat (limited to 'source4/libcli')
-rw-r--r-- | source4/libcli/dgram/dgramsocket.c | 12 | ||||
-rw-r--r-- | source4/libcli/nbt/nbtsocket.c | 11 |
2 files changed, 16 insertions, 7 deletions
diff --git a/source4/libcli/dgram/dgramsocket.c b/source4/libcli/dgram/dgramsocket.c index a3909df768..88eed5c10b 100644 --- a/source4/libcli/dgram/dgramsocket.c +++ b/source4/libcli/dgram/dgramsocket.c @@ -27,8 +27,6 @@ #include "libcli/dgram/libdgram.h" #include "lib/socket/socket.h" -#define DGRAM_MAX_PACKET_SIZE 2048 - /* handle recv events on a nbt dgram socket @@ -40,11 +38,17 @@ static void dgm_socket_recv(struct nbt_dgram_socket *dgmsock) const char *src_addr; int src_port; DATA_BLOB blob; - size_t nread; + size_t nread, dsize; struct nbt_dgram_packet *packet; const char *mailslot_name; - blob = data_blob_talloc(tmp_ctx, NULL, DGRAM_MAX_PACKET_SIZE); + status = socket_pending(dgmsock->sock, &dsize); + if (!NT_STATUS_IS_OK(status)) { + talloc_free(tmp_ctx); + return; + } + + blob = data_blob_talloc(tmp_ctx, NULL, dsize); if (blob.data == NULL) { talloc_free(tmp_ctx); return; diff --git a/source4/libcli/nbt/nbtsocket.c b/source4/libcli/nbt/nbtsocket.c index 481327cc85..f600afb79f 100644 --- a/source4/libcli/nbt/nbtsocket.c +++ b/source4/libcli/nbt/nbtsocket.c @@ -26,7 +26,6 @@ #include "libcli/nbt/libnbt.h" #include "lib/socket/socket.h" -#define NBT_MAX_PACKET_SIZE 2048 #define NBT_MAX_REPLIES 1000 /* @@ -157,11 +156,17 @@ static void nbt_name_socket_recv(struct nbt_name_socket *nbtsock) const char *src_addr; int src_port; DATA_BLOB blob; - size_t nread; + size_t nread, dsize; struct nbt_name_packet *packet; struct nbt_name_request *req; - blob = data_blob_talloc(tmp_ctx, NULL, NBT_MAX_PACKET_SIZE); + status = socket_pending(nbtsock->sock, &dsize); + if (!NT_STATUS_IS_OK(status)) { + talloc_free(tmp_ctx); + return; + } + + blob = data_blob_talloc(tmp_ctx, NULL, dsize); if (blob.data == NULL) { talloc_free(tmp_ctx); return; |