return;
}
- smb_krb5->status = socket_recv(smb_krb5->sock, blob.data, blob.length, &nread, 0);
+ smb_krb5->status = socket_recv(smb_krb5->sock, blob.data, blob.length, &nread);
if (!NT_STATUS_IS_OK(smb_krb5->status)) {
talloc_free(tmp_ctx);
return;
smb_krb5->status = socket_recv(smb_krb5->sock,
smb_krb5->partial.data + smb_krb5->partial_read,
4 - smb_krb5->partial_read,
- &nread, 0);
+ &nread);
/* todo: this should be converted to the packet_*() routines */
if (!NT_STATUS_IS_OK(smb_krb5->status)) {
return;
smb_krb5->status = socket_recv(smb_krb5->sock,
smb_krb5->partial.data + smb_krb5->partial_read,
smb_krb5->partial.length - smb_krb5->partial_read,
- &nread, 0);
+ &nread);
if (!NT_STATUS_IS_OK(smb_krb5->status)) return;
smb_krb5->partial_read += nread;
size_t len;
len = smb_krb5->request.length;
- status = socket_send(smb_krb5->sock, &smb_krb5->request, &len, 0);
+ status = socket_send(smb_krb5->sock, &smb_krb5->request, &len);
if (!NT_STATUS_IS_OK(status)) return;
NTSTATUS status;
size_t sendlen;
- status = socket_sendto(kdc_socket->sock, &rep->packet, &sendlen, 0,
+ status = socket_sendto(kdc_socket->sock, &rep->packet, &sendlen,
rep->dest);
if (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
break;
return;
}
- status = socket_recvfrom(kdc_socket->sock, blob.data, blob.length, &nread, 0,
+ status = socket_recvfrom(kdc_socket->sock, blob.data, blob.length, &nread,
tmp_ctx, &src);
if (!NT_STATUS_IS_OK(status)) {
talloc_free(tmp_ctx);
/* we send with privileges so messages work from any context */
priv = root_privileges();
- status = socket_sendto(msg->sock, &rec->packet, &nsent, 0, path);
+ status = socket_sendto(msg->sock, &rec->packet, &nsent, path);
talloc_free(path);
talloc_free(priv);
return;
}
- status = socket_recv(msg->sock, packet.data, msize, &msize, 0);
+ status = socket_recv(msg->sock, packet.data, msize, &msize);
if (!NT_STATUS_IS_OK(status)) {
data_blob_free(&packet);
return;
}
_PUBLIC_ NTSTATUS socket_recv(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags)
+ size_t wantlen, size_t *nread)
{
if (sock == NULL) {
return NT_STATUS_CONNECTION_DISCONNECTED;
*nread = 0;
return STATUS_MORE_ENTRIES;
}
- return sock->ops->fn_recv(sock, buf, 1+(random() % wantlen), nread, flags);
+ return sock->ops->fn_recv(sock, buf, 1+(random() % wantlen), nread);
}
- return sock->ops->fn_recv(sock, buf, wantlen, nread, flags);
+ return sock->ops->fn_recv(sock, buf, wantlen, nread);
}
_PUBLIC_ NTSTATUS socket_recvfrom(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags,
+ size_t wantlen, size_t *nread,
TALLOC_CTX *mem_ctx, struct socket_address **src_addr)
{
if (sock == NULL) {
return NT_STATUS_NOT_IMPLEMENTED;
}
- return sock->ops->fn_recvfrom(sock, buf, wantlen, nread, flags,
+ return sock->ops->fn_recvfrom(sock, buf, wantlen, nread,
mem_ctx, src_addr);
}
_PUBLIC_ NTSTATUS socket_send(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags)
+ const DATA_BLOB *blob, size_t *sendlen)
{
if (sock == NULL) {
return NT_STATUS_CONNECTION_DISCONNECTED;
return STATUS_MORE_ENTRIES;
}
blob2.length = 1+(random() % blob2.length);
- return sock->ops->fn_send(sock, &blob2, sendlen, flags);
+ return sock->ops->fn_send(sock, &blob2, sendlen);
}
- return sock->ops->fn_send(sock, blob, sendlen, flags);
+ return sock->ops->fn_send(sock, blob, sendlen);
}
_PUBLIC_ NTSTATUS socket_sendto(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags,
+ const DATA_BLOB *blob, size_t *sendlen,
const struct socket_address *dest_addr)
{
if (sock == NULL) {
return NT_STATUS_NOT_IMPLEMENTED;
}
- return sock->ops->fn_sendto(sock, blob, sendlen, flags, dest_addr);
+ return sock->ops->fn_sendto(sock, blob, sendlen, dest_addr);
}
/* general ops */
NTSTATUS (*fn_recv)(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags);
+ size_t wantlen, size_t *nread);
NTSTATUS (*fn_send)(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags);
+ const DATA_BLOB *blob, size_t *sendlen);
NTSTATUS (*fn_sendto)(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags,
+ const DATA_BLOB *blob, size_t *sendlen,
const struct socket_address *dest_addr);
NTSTATUS (*fn_recvfrom)(struct socket_context *sock,
- void *buf, size_t wantlen, size_t *nread, uint32_t flags,
+ void *buf, size_t wantlen, size_t *nread,
TALLOC_CTX *addr_ctx, struct socket_address **src_addr);
NTSTATUS (*fn_pending)(struct socket_context *sock, size_t *npending);
int queue_size, uint32_t flags);
NTSTATUS socket_accept(struct socket_context *sock, struct socket_context **new_sock);
NTSTATUS socket_recv(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags);
+ size_t wantlen, size_t *nread);
NTSTATUS socket_recvfrom(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags,
+ size_t wantlen, size_t *nread,
TALLOC_CTX *addr_ctx, struct socket_address **src_addr);
NTSTATUS socket_send(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags);
+ const DATA_BLOB *blob, size_t *sendlen);
NTSTATUS socket_sendto(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags,
+ const DATA_BLOB *blob, size_t *sendlen,
const struct socket_address *dest_addr);
NTSTATUS socket_pending(struct socket_context *sock, size_t *npending);
NTSTATUS socket_set_option(struct socket_context *sock, const char *option, const char *val);
}
static NTSTATUS ipv4_recv(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags)
+ size_t wantlen, size_t *nread)
{
ssize_t gotlen;
- int flgs = 0;
-
- /* TODO: we need to map all flags here */
- if (flags & SOCKET_FLAG_PEEK) {
- flgs |= MSG_PEEK;
- }
-
- if (flags & SOCKET_FLAG_BLOCK) {
- flgs |= MSG_WAITALL;
- }
*nread = 0;
- gotlen = recv(sock->fd, buf, wantlen, flgs);
+ gotlen = recv(sock->fd, buf, wantlen, 0);
if (gotlen == 0) {
return NT_STATUS_END_OF_FILE;
} else if (gotlen == -1) {
static NTSTATUS ipv4_recvfrom(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags,
+ size_t wantlen, size_t *nread,
TALLOC_CTX *addr_ctx, struct socket_address **_src)
{
ssize_t gotlen;
- int flgs = 0;
struct sockaddr_in *from_addr;
socklen_t from_len = sizeof(*from_addr);
struct socket_address *src;
}
src->sockaddr = (struct sockaddr *)from_addr;
- if (flags & SOCKET_FLAG_PEEK) {
- flgs |= MSG_PEEK;
- }
-
- if (flags & SOCKET_FLAG_BLOCK) {
- flgs |= MSG_WAITALL;
- }
*nread = 0;
- gotlen = recvfrom(sock->fd, buf, wantlen, flgs,
+ gotlen = recvfrom(sock->fd, buf, wantlen, 0,
src->sockaddr, &from_len);
if (gotlen == 0) {
talloc_free(src);
}
static NTSTATUS ipv4_send(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags)
+ const DATA_BLOB *blob, size_t *sendlen)
{
ssize_t len;
- int flgs = 0;
*sendlen = 0;
- len = send(sock->fd, blob->data, blob->length, flgs);
+ len = send(sock->fd, blob->data, blob->length, 0);
if (len == -1) {
return map_nt_error_from_unix(errno);
}
}
static NTSTATUS ipv4_sendto(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags,
+ const DATA_BLOB *blob, size_t *sendlen,
const struct socket_address *dest_addr)
{
ssize_t len;
- int flgs = 0;
if (dest_addr->sockaddr) {
- len = sendto(sock->fd, blob->data, blob->length, flgs,
+ len = sendto(sock->fd, blob->data, blob->length, 0,
dest_addr->sockaddr, dest_addr->sockaddrlen);
} else {
struct sockaddr_in srv_addr;
*sendlen = 0;
- len = sendto(sock->fd, blob->data, blob->length, flgs,
+ len = sendto(sock->fd, blob->data, blob->length, 0,
(struct sockaddr *)&srv_addr, sizeof(srv_addr));
}
if (len == -1) {
}
static NTSTATUS ipv6_tcp_recv(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags)
+ size_t wantlen, size_t *nread)
{
ssize_t gotlen;
- int flgs = 0;
-
- /* TODO: we need to map all flags here */
- if (flags & SOCKET_FLAG_PEEK) {
- flgs |= MSG_PEEK;
- }
-
- if (flags & SOCKET_FLAG_BLOCK) {
- flgs |= MSG_WAITALL;
- }
*nread = 0;
- gotlen = recv(sock->fd, buf, wantlen, flgs);
+ gotlen = recv(sock->fd, buf, wantlen, 0);
if (gotlen == 0) {
return NT_STATUS_END_OF_FILE;
} else if (gotlen == -1) {
}
static NTSTATUS ipv6_tcp_send(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags)
+ const DATA_BLOB *blob, size_t *sendlen)
{
ssize_t len;
- int flgs = 0;
*sendlen = 0;
- len = send(sock->fd, blob->data, blob->length, flgs);
+ len = send(sock->fd, blob->data, blob->length, 0);
if (len == -1) {
return map_nt_error_from_unix(errno);
}
}
static NTSTATUS unixdom_recv(struct socket_context *sock, void *buf,
- size_t wantlen, size_t *nread, uint32_t flags)
+ size_t wantlen, size_t *nread)
{
ssize_t gotlen;
- int flgs = 0;
-
- /* TODO: we need to map all flags here */
- if (flags & SOCKET_FLAG_PEEK) {
- flgs |= MSG_PEEK;
- }
-
- if (flags & SOCKET_FLAG_BLOCK) {
- flgs |= MSG_WAITALL;
- }
*nread = 0;
- gotlen = recv(sock->fd, buf, wantlen, flgs);
+ gotlen = recv(sock->fd, buf, wantlen, 0);
if (gotlen == 0) {
return NT_STATUS_END_OF_FILE;
} else if (gotlen == -1) {
}
static NTSTATUS unixdom_send(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags)
+ const DATA_BLOB *blob, size_t *sendlen)
{
ssize_t len;
- int flgs = 0;
*sendlen = 0;
- len = send(sock->fd, blob->data, blob->length, flgs);
+ len = send(sock->fd, blob->data, blob->length, 0);
if (len == -1) {
return unixdom_error(errno);
}
static NTSTATUS unixdom_sendto(struct socket_context *sock,
- const DATA_BLOB *blob, size_t *sendlen, uint32_t flags,
+ const DATA_BLOB *blob, size_t *sendlen,
const struct socket_address *dest)
{
ssize_t len;
- int flgs = 0;
*sendlen = 0;
if (dest->sockaddr) {
- len = sendto(sock->fd, blob->data, blob->length, flgs,
+ len = sendto(sock->fd, blob->data, blob->length, 0,
dest->sockaddr, dest->sockaddrlen);
} else {
struct sockaddr_un srv_addr;
srv_addr.sun_family = AF_UNIX;
strncpy(srv_addr.sun_path, dest->addr, sizeof(srv_addr.sun_path));
- len = sendto(sock->fd, blob->data, blob->length, flgs,
+ len = sendto(sock->fd, blob->data, blob->length, 0,
(struct sockaddr *)&srv_addr, sizeof(srv_addr));
}
if (len == -1) {
npending, &nread);
} else {
status = socket_recv(pc->sock, pc->partial.data + pc->num_read,
- npending, &nread, 0);
+ npending, &nread);
}
if (NT_STATUS_IS_ERR(status)) {
packet_error(pc, status);
if (pc->tls) {
status = tls_socket_send(pc->tls, &blob, &nwritten);
} else {
- status = socket_send(pc->sock, &blob, &nwritten, 0);
+ status = socket_send(pc->sock, &blob, &nwritten);
}
if (NT_STATUS_IS_ERR(status)) {
packet_error(pc, NT_STATUS_NET_WRITE_FAULT);
return 1;
}
- status = socket_recv(tls->socket, buf, size, &nread, 0);
+ status = socket_recv(tls->socket, buf, size, &nread);
if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) {
return 0;
}
b.data = discard_const(buf);
b.length = size;
- status = socket_send(tls->socket, &b, &nwritten, 0);
+ status = socket_send(tls->socket, &b, &nwritten);
if (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
errno = EAGAIN;
return -1;
int ret;
NTSTATUS status;
if (tls->tls_enabled && tls->tls_detect) {
- status = socket_recv(tls->socket, &tls->first_byte, 1, nread, 0);
+ status = socket_recv(tls->socket, &tls->first_byte, 1, nread);
NT_STATUS_NOT_OK_RETURN(status);
if (*nread == 0) return NT_STATUS_OK;
tls->tls_detect = False;
}
if (!tls->tls_enabled) {
- return socket_recv(tls->socket, buf, wantlen, nread, 0);
+ return socket_recv(tls->socket, buf, wantlen, nread);
}
status = tls_handshake(tls);
int ret;
if (!tls->tls_enabled) {
- return socket_send(tls->socket, blob, sendlen, 0);
+ return socket_send(tls->socket, blob, sendlen);
}
status = tls_handshake(tls);
return;
}
- status = socket_recvfrom(cldap->sock, blob.data, blob.length, &nread, 0,
+ status = socket_recvfrom(cldap->sock, blob.data, blob.length, &nread,
tmp_ctx, &src);
if (!NT_STATUS_IS_OK(status)) {
talloc_free(tmp_ctx);
req->num_retries--;
- socket_sendto(req->cldap->sock, &req->encoded, &len, 0,
+ socket_sendto(req->cldap->sock, &req->encoded, &len,
req->dest);
req->te = event_add_timed(req->cldap->event_ctx, req,
size_t len;
len = req->encoded.length;
- status = socket_sendto(cldap->sock, &req->encoded, &len, 0,
+ status = socket_sendto(cldap->sock, &req->encoded, &len,
req->dest);
if (NT_STATUS_IS_ERR(status)) {
DEBUG(3,("Failed to send cldap request of length %u to %s:%d\n",
return;
}
- status = socket_recvfrom(dgmsock->sock, blob.data, blob.length, &nread, 0,
+ status = socket_recvfrom(dgmsock->sock, blob.data, blob.length, &nread,
tmp_ctx, &src);
if (!NT_STATUS_IS_OK(status)) {
talloc_free(tmp_ctx);
size_t len;
len = req->encoded.length;
- status = socket_sendto(dgmsock->sock, &req->encoded, &len, 0,
+ status = socket_sendto(dgmsock->sock, &req->encoded, &len,
req->dest);
if (NT_STATUS_IS_ERR(status)) {
DEBUG(3,("Failed to send datagram of length %u to %s:%d: %s\n",
size_t len;
len = req->encoded.length;
- status = socket_sendto(nbtsock->sock, &req->encoded, &len, 0,
+ status = socket_sendto(nbtsock->sock, &req->encoded, &len,
req->dest);
if (NT_STATUS_IS_ERR(status)) goto failed;
return;
}
- status = socket_recvfrom(nbtsock->sock, blob.data, blob.length, &nread, 0,
+ status = socket_recvfrom(nbtsock->sock, blob.data, blob.length, &nread,
tmp_ctx, &src);
if (!NT_STATUS_IS_OK(status)) {
talloc_free(tmp_ctx);
struct socket_context *sock = talloc_get_type(private_data, struct socket_context);
size_t sendlen;
- status = socket_send(sock, out, &sendlen, 0);
+ status = socket_send(sock, out, &sendlen);
NT_STATUS_IS_ERR_RETURN(status);
*nwritten = sendlen;
return;
}
- status = socket_recv(conn->socket, tmp_blob.data, tmp_blob.length, &nread, 0);
+ status = socket_recv(conn->socket, tmp_blob.data, tmp_blob.length, &nread);
if (NT_STATUS_IS_ERR(status)) {
dcesrv_terminate_connection(dce_conn, nt_errstr(status));
return;
generate_random_buffer(blob.data, blob.length);
sent = size;
- status = socket_sendto(sock2, &blob, &sent, 0, srv_addr);
+ status = socket_sendto(sock2, &blob, &sent, srv_addr);
CHECK_STATUS(status, NT_STATUS_OK);
- status = socket_recvfrom(sock1, blob2.data, size, &nread, 0,
+ status = socket_recvfrom(sock1, blob2.data, size, &nread,
sock1, &from_addr);
CHECK_STATUS(status, NT_STATUS_OK);
}
generate_random_buffer(blob.data, blob.length);
- status = socket_sendto(sock1, &blob, &sent, 0, from_addr);
+ status = socket_sendto(sock1, &blob, &sent, from_addr);
CHECK_STATUS(status, NT_STATUS_OK);
- status = socket_recvfrom(sock2, blob2.data, size, &nread, 0,
+ status = socket_recvfrom(sock2, blob2.data, size, &nread,
sock2, &from_addr);
CHECK_STATUS(status, NT_STATUS_OK);
if (strcmp(from_addr->addr, srv_addr->addr) != 0) {
generate_random_buffer(blob.data, blob.length);
sent = size;
- status = socket_send(sock2, &blob, &sent, 0);
+ status = socket_send(sock2, &blob, &sent);
CHECK_STATUS(status, NT_STATUS_OK);
- status = socket_recv(sock3, blob2.data, size, &nread, 0);
+ status = socket_recv(sock3, blob2.data, size, &nread);
CHECK_STATUS(status, NT_STATUS_OK);
from_addr = socket_get_peer_addr(sock3, mem_ctx);
}
if (memcmp(blob2.data, blob.data, size) != 0) {
- printf("Bad data in recvfrom\n");
- ret = False;
- }
-
- generate_random_buffer(blob.data, blob.length);
- status = socket_send(sock3, &blob, &sent, 0);
- CHECK_STATUS(status, NT_STATUS_OK);
-
- status = socket_recv(sock2, blob2.data, size, &nread, 0);
- CHECK_STATUS(status, NT_STATUS_OK);
-
- from_addr = socket_get_peer_addr(sock2, mem_ctx);
-
- if (!from_addr || !from_addr->addr) {
- printf("Unexpected recvfrom addr NULL\n");
- return False;
- }
- if (strcmp(from_addr->addr, srv_addr->addr) != 0) {
- printf("Unexpected recvfrom addr %s\n", from_addr ? from_addr->addr : NULL);
- ret = False;
- }
- if (nread != size) {
- printf("Unexpected recvfrom size %d should be %d\n", (int)nread, (int)size);
- ret = False;
- }
- if (from_addr->port != srv_addr->port) {
- printf("Unexpected recvfrom port %d should be %d\n",
- from_addr->port, srv_addr->port);
- ret = False;
- }
- if (memcmp(blob2.data, blob.data, size) != 0) {
- printf("Bad data in recvfrom\n");
+ printf("Bad data in recv\n");
ret = False;
}