user261922 user261922 - 5 months ago 41
Swift Question

struggling with NMSSH in swift; errors -2, -9, -18,

I am trying to implement something using the

NMSSH
framework in swift.

To not have my UI freeze while collecting data from the servers I put everything inside a

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0))


And I sometimes (about 50% probability) randomly get one of these errors. I am not sure what causes them or how to prevent them. The appear seemingly randomly, but in chains, one it goes wrong it will keep going wrong for a while, and when it finally works it will work a few times in a row.

Socket connection to 192.168.178.27 on port 22 failed with reason -2, trying next address...

Error Domain=libssh2 Code=-18 "Authentication failed (keyboard-interactive)" UserInfo={NSLocalizedDescription=Authentication failed (keyboard-interactive)}

Error Domain=libssh2 Code=-9 "Waiting for password response" UserInfo={NSLocalizedDescription=Waiting for password response}


but most frequently

Error Domain=libssh2 Code=-9 "Would block requesting userauth list" UserInfo={NSLocalizedDescription=Would block requesting userauth list}


and

Error Domain=libssh2 Code=-9 "Would block" UserInfo={NSLocalizedDescription=Would block}


EDIT: I pasted my whole code here, but it is kinda messy.
The function is supposed to be called once and then check a bunch of servers for their availability.

getServers()
returns an array of dictionaries, each looking like
["alias": "iMac", "ip":" mac.local", "port":"22", "username": "root", "password": "123"]

Answer

Try using NSOperationQueue, it is higher level and might be able to handle that better