[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Need help, channel_read() blocks forever before EOF
[Thread Prev] | [Thread Next]
- Subject: Need help, channel_read() blocks forever before EOF
- From: Zhang Qian <zhq527725@xxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Mon, 16 May 2011 21:39:08 +0800
- To: libssh@xxxxxxxxxx
Hi, I wrote a program in a RHEL linux machine which tries to execute a powershell script remotely on a Windows 2008 server, and get the result back. In the Windows 2008 server, I have WinSSHD installed and running. I found my program will always hang at channel_read(), see the following callstack: (gdb) bt #0 0x000000381f4d4755 in recv () from /lib64/libc.so.6 #1 0x00002aaaaaaca2cc in ssh_socket_unbuffered_read (s=0x605720, buffer=0x60b430, len=16) at socket.c:135 #2 0x00002aaaaaaca338 in ssh_socket_completeread (s=0x605720, buffer=0x60b430, len=16) at socket.c:197 #3 0x00002aaaaaacaa63 in ssh_socket_wait_for_data (s=0x605720, session=0x605050, len=<value optimized out>) at socket.c:297 #4 0x00002aaaaaac3ea9 in packet_read2 (session=0x605050) at packet.c:66 #5 0x00002aaaaaab92e0 in channel_read (channel=0x60b9b0, buffer=0x60ac60, bytes=498, is_stderr=<value optimized out>) at channels.c:850 #6 0x0000000000401e74 in helper_SSHChannelGets (sessionRec=0x605010, maxBytesToRead=498, result=0x7fffffffe478, timeout_in_sec=0) at sshutils.c:323 #7 0x0000000000402827 in helper_SSHGets (sessionRec=0x605010, resultSize=513, result=0x7fffffffe530 " <Property Name=\"VMName\">Test_VM</Property>\r\n", timeout_in_sec=0) at sshutils.c:686 #8 0x0000000000402bfa in SSHGets (sessionRec=0x605010, resultSize=513, result=0x7fffffffe530 " <Property Name=\"VMName\">Test_VM</Property>\r\n") at sshutils.c:826 #9 0x0000000000401499 in main () at main.c:25 I am sure the EOF did not happen, so why did channel_read() block there and never return? Only about 1/3 result can be returned back. In my program, I call channel_request_exec() to execute the powershell script remotely, and then call channel_read() in a while loop to get the stdout of that script: ... /* The following code are in a while loop */ if (channel_is_open(channel) && channel_poll(channel,0)) { curr_bytes=channel_read(channel,readbuf, bytes_to_read, 0); ... Is there any mistakes in my program? Or any configurations I should do in WinSSHD? Or try another SSH daemon for Windows? Any help will be really appreciated, thanks! Regards, Qian
Re: Need help, channel_read() blocks forever before EOF | "Paulo R. Panhoto" <paulo.panhoto@xxxxxxxxx> |
Re: Need help, channel_read() blocks forever before EOF | Andreas Schneider <asn@xxxxxxxxxxxxxx> |