Lee Howard
2000-Oct-27 18:27 UTC
logon errors, write_socket_data: write failure. Error =Brokenpipe
Can somebody who knows C better than me look at the write_socket_data
routine below and tell me under what conditions I would see the following
error:
write_socket_data: write failure. Error = Broken pipe
This always appears in this fashion:
[2000/10/26 16:07:52, 0] lib/util_sock.c:write_socket_data(540)
write_socket_data: write failure. Error = Broken pipe
[2000/10/26 16:07:52, 0] lib/util_sock.c:write_socket(566)
write_socket: Error writing 4 bytes to socket 6: ERRNO = Broken pipe
[2000/10/26 16:07:52, 0] lib/util_sock.c:send_smb(754)
Error writing 4 bytes to client. -1. Exiting
I know that it would correlate with one of:
SSL_write(ssl,buffer + total,N - total)
send(fd,buffer + total,N - total, 0)
send(fd,buffer + total,N - total,0)
returning the value of -1, but I don't know what send() or SSL_write() do.
Thanks
Lee Howard
( from samba-2.0.7/source/lib/util_sock.c ):
/****************************************************************************
Write data to a socket - use send rather than write.
****************************************************************************/
ssize_t write_socket_data(int fd,char *buffer,size_t N)
{
size_t total=0;
ssize_t ret;
while (total < N)
{
#ifdef WITH_SSL
if(fd == sslFd){
ret = SSL_write(ssl,buffer + total,N - total);
}else{
ret = send(fd,buffer + total,N - total, 0);
}
#else /* WITH_SSL */
ret = send(fd,buffer + total,N - total,0);
#endif /* WITH_SSL */
if (ret == -1) {
DEBUG(0,("write_socket_data: write failure. Error = %s\n",
strerror(errno$
return -1;
}
if (ret == 0) return total;
total += ret;
}
return (ssize_t)total;
}
Lee Howard
2000-Oct-30 19:03 UTC
logon errors, write_socket_data: write failure. Error =Brokenpipe
I just tried:
socket options = TCP_NODELAY
socket options = SO_RCVBUF=1
socket options = SO_SNDBUF=1
With no improvement... Any ideas anyone?
Lee.
At 12:27 PM 10/27/00 -0600, Lee Howard wrote:>Can somebody who knows C better than me look at the write_socket_data
>routine below and tell me under what conditions I would see the following
>error:
>
>write_socket_data: write failure. Error = Broken pipe
>
>This always appears in this fashion:
>
>[2000/10/26 16:07:52, 0] lib/util_sock.c:write_socket_data(540)
> write_socket_data: write failure. Error = Broken pipe
>[2000/10/26 16:07:52, 0] lib/util_sock.c:write_socket(566)
> write_socket: Error writing 4 bytes to socket 6: ERRNO = Broken pipe
>[2000/10/26 16:07:52, 0] lib/util_sock.c:send_smb(754)
> Error writing 4 bytes to client. -1. Exiting
>
>I know that it would correlate with one of:
>
>SSL_write(ssl,buffer + total,N - total)
>send(fd,buffer + total,N - total, 0)
>send(fd,buffer + total,N - total,0)
>
>returning the value of -1, but I don't know what send() or SSL_write()
do.
>
>Thanks
>
>Lee Howard
>
>
>( from samba-2.0.7/source/lib/util_sock.c ):
>
>/****************************************************************************
> Write data to a socket - use send rather than write.
>****************************************************************************/
>
>ssize_t write_socket_data(int fd,char *buffer,size_t N)
>{
> size_t total=0;
> ssize_t ret;
>
> while (total < N)
> {
>#ifdef WITH_SSL
> if(fd == sslFd){
> ret = SSL_write(ssl,buffer + total,N - total);
> }else{
> ret = send(fd,buffer + total,N - total, 0);
> }
>#else /* WITH_SSL */
> ret = send(fd,buffer + total,N - total,0);
>#endif /* WITH_SSL */
>
> if (ret == -1) {
> DEBUG(0,("write_socket_data: write failure. Error = %s\n",
>strerror(errno$
> return -1;
> }
> if (ret == 0) return total;
>
> total += ret;
> }
> return (ssize_t)total;
>}
>
>