[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Patch] channel_get_exit_status always return -1
[Thread Prev] | [Thread Next]
- Subject: Re: [Patch] channel_get_exit_status always return -1
- From: Vic Lee <llyzs@xxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Mon, 17 Aug 2009 22:07:34 +0800
- To: libssh@xxxxxxxxxx
Hi Aris, Today I played a little bit more with exit_status and you are right, it won't be able to get it if the channel is closed. If I just try to channel_send_eof then it works just fine. But now I come up with an interesting question: why I have to send eof before I can call channel_get_exit_status? I actually tried to remove the following lines, and I have no problem getting exit_status without sending eof: int channel_get_exit_status(ssh_channel channel) { - if (channel->local_eof == 0) { - return -1; - } Although right now it's not problem for me because I only need to issue one exec, but let's imagine someone else in the future might need to execute several commands and he needs to get exit_status for each command before he can continue with the next. In this case, does he have to open/close a new channel for each command? I have a strong feeling that we should remove the above three lines; or did I miss something else? Thanks a lot and sorry for my long question. :) Vic On Sun, 2009-08-16 at 13:55 +0200, Aris Adamantiadis wrote: > Hi Vic, > > Thanks for your patch, there is indeed a problem. But your patch does > not resolve it the clean way. When a channel has been closed, the > optional exit_status message can't come anymore, hence the return -1 in > the code (simply removing the test may block the function forever if no > exit status is sent). I replaced it by a break; so it returns whatever > value was saved. > > Regards, > Aris > > Vic Lee a écrit : > > Hi, > > > > I just found out that the channel_get_exit_status() function always > > return -1. What I saw in the codes is that, the channel is supposed to > > close first before we can call channel_get_exit_status; which is true > > because it's checking "channel->local_eof == 0" in the first line of > > that function. > > > > But if I have to close the channel, why another checking "channel->open > > == 0" to check whether the channel is open? So I tried to remove these > > three lines, and finally it's working as expected. > > > > Thanks, > > > > Vic >
Re: [Patch] channel_get_exit_status always return -1 | Aris Adamantiadis <aris@xxxxxxxxxxxx> |
[Patch] channel_get_exit_status always return -1 | Vic Lee <llyzs@xxxxxxx> |
Re: [Patch] channel_get_exit_status always return -1 | Aris Adamantiadis <aris@xxxxxxxxxxxx> |