Bugs item #1588093, was opened at 2006-10-31 19:16 Message generated for change (Settings changed) made by bagder You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=703942&aid=1588093&group_id=125852
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed >Resolution: Wont Fix Priority: 3 Private: No Submitted By: Chris Nystrom (cnystrom) Assigned to: Daniel Stenberg (bagder) Summary: libssh2_poll_channel_read() Initial Comment: I believe the following code demonstrates a bug with the function libssh2_poll_channel_read(). This function should return 1 when data is waiting to be read, but always seems to return 0. In the program below I get a return of zero, but I immediately and successfully read data. I need this function to work properly so I can write a wrapper over libssh2 so I can use it in a multi-threaded application. Chris -- #include "ssh2_lib.h" #include <stdio.h> #include "../sock_lib/sock_lib.h" #define SSH_PORT (22) int main(int argc, char *argv[]) { int sock; char buf[256] = ""; LIBSSH2_SESSION *session; LIBSSH2_CHANNEL *channel; const char *server = "apollo.newio.org"; const char *username = "cnystrom"; const char *passwd = "********"; sock = init_tcp_client(server, SSH_PORT); if (sock <= 0) { return (-1); } session = libssh2_session_init(); if (libssh2_session_startup(session, sock)) { fprintf(stderr, "Failure establishing SSH session\n"); return(-3); } if (libssh2_userauth_password(session, username, passwd)) { fprintf(stderr, "Authentication by password failed.\n"); return (-4); } if (!(channel = libssh2_channel_open_session(session))) { fprintf(stderr, "Unable to open a channel\n"); return (-5); } libssh2_channel_set_blocking(channel, BLOCK); if (libssh2_channel_subsystem(channel, "hello") != 0) { fprintf(stderr, "error: libssh2_channel_subsystem() failed.\n"); return (-6); } int i; // bug: should return 1, but returns 0 i = libssh2_poll_channel_read(channel, 0); printf("i = %d\n", i); libssh2_channel_read(channel, buf, 256); printf("--\n"); printf("%s", buf); printf("--\n"); libssh2_channel_free(channel); libssh2_session_disconnect(session, "Normal Shutdown."); libssh2_session_free(session); close_socket(sock); return 0; } ---------------------------------------------------------------------- Comment By: Daniel Stenberg (bagder) Date: 2009-04-05 20:41 Message: What exactly are you using/needing this function for? I don't see its purpose. I would rather like to just deprecate it and not care about it anymore... ---------------------------------------------------------------------- Comment By: James Housley (jehousley) Date: 2007-06-06 22:21 Message: Logged In: YES user_id=32239 Originator: NO Looking at the code, that is correct. The code loops looking at the same packet over and over. There needs to be a call of some type to libssh2_packet_read(), otherwise nothing will ever change in a single threaded program. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=703942&aid=1588093&group_id=125852 ------------------------------------------------------------------------------ This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ libssh2-devel mailing list libssh2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libssh2-devel