int sock_recv(SOCKET sock, SSL *ssl, void *buffer, size_t size, int flags,
char *errbuf, int errbuflen)
{
+ int recv_flags = 0;
char *bufp = buffer;
int remaining;
ssize_t nread;
return -1;
}
+ if (flags & SOCK_MSG_PEEK)
+ recv_flags |= MSG_PEEK;
+
bufp = (char *) buffer;
remaining = (int) size;
#ifdef HAVE_OPENSSL
if (ssl)
{
+ /*
+ * XXX - what about MSG_PEEK?
+ */
nread = ssl_recv(ssl, bufp, remaining, errbuf, errbuflen);
if (nread == -2) return -1;
}
else
+ nread = recv(sock, bufp, remaining, recv_flags);
#else
- (void)ssl;
+ nread = recv(sock, bufp, remaining, recv_flags);
#endif
- nread = recv(sock, bufp, remaining, 0);
if (nread == -1)
{
* don't need to loop.
*/
#ifdef _WIN32
- nread = recv(sock, buffer, size, 0);
+ nread = recv(sock, buffer, (int)size, 0);
if (nread == SOCKET_ERROR)
{
/*
(memcmp(&((struct sockaddr_in6 *) sockaddr)->sin6_addr, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", sizeof(struct in6_addr)) == 0))
{
if (address)
- strlcpy(address, SOCKET_NAME_NULL_DAD, addrlen);
+ pcap_strlcpy(address, SOCKET_NAME_NULL_DAD, addrlen);
return retval;
}
}
if (address)
{
- strlcpy(address, SOCKET_NO_NAME_AVAILABLE, addrlen);
+ pcap_strlcpy(address, SOCKET_NO_NAME_AVAILABLE, addrlen);
address[addrlen - 1] = 0;
}
if (port)
{
- strlcpy(port, SOCKET_NO_PORT_AVAILABLE, portlen);
+ pcap_strlcpy(port, SOCKET_NO_PORT_AVAILABLE, portlen);
port[portlen - 1] = 0;
}