/* ARGSUSED */ static void mux_master_control_cleanup_cb(int cid, void *unused) { Channel *sc, *c = channel_by_id(cid); debug3("%s: entering for channel %d", __func__, cid); if (c == NULL) fatal("%s: channel_by_id(%i) == NULL", __func__, cid); if (c->remote_id != -1) { if ((sc = channel_by_id(c->remote_id)) == NULL) debug2("%s: channel %d n session channel %d", __func__, c->self, c->remote_id); c->remote_id = -1; sc->ctl_chan = -1; if (sc->type != SSH_CHANNEL_OPEN) { debug2("%s: channel %d: not open", __func__, sc->self); chan_mark_dead(sc); } else { if (sc->istate == CHAN_INPUT_OPEN) chan_read_failed(sc); if (sc->ostate == CHAN_OUTPUT_OPEN) chan_write_failed(sc); } } channel_cancel_cleanup(c->self); }
/* ARGSUSED */ static void mux_master_session_cleanup_cb(int cid, void *unused) { Channel *cc, *c = channel_by_id(cid); debug3("%s: entering for channel %d", __func__, cid); if (c == NULL) fatal("%s: channel_by_id(%i) == NULL", __func__, cid); if (c->ctl_chan != -1) { if ((cc = channel_by_id(c->ctl_chan)) == NULL) fatal("%s: channel %d missing control channel %d", __func__, c->self, c->ctl_chan); c->ctl_chan = -1; cc->remote_id = -1; chan_rcvd_oclose(cc); } channel_cancel_cleanup(c->self); }
int handle_aeskeyerr (unsigned char *payload) { CHANNEL *ch; struct despotify_session* ds; int ret = 0; DSFYDEBUG("Server said 0x0e (AES key error) for channel %d\n", ntohs (*(unsigned short *) (payload + 2))) if ((ch = channel_by_id (ntohs (*(unsigned short *) (payload + 2)))) != NULL) { ds = ch->private; if(ds->client_callback) ds->client_callback(ds, DESPOTIFY_TRACK_PLAY_ERROR, NULL, ds->client_callback_data); channel_unregister (ch); }
int handle_aeskey (unsigned char *payload, int len) { CHANNEL *ch; int ret; DSFYDEBUG ("Server said 0x0d (AES key) for channel %d\n", ntohs (*(unsigned short *) (payload + 2))) if ((ch = channel_by_id (ntohs (*(unsigned short *) (payload + 2)))) != NULL) { ret = ch->callback (ch, payload + 4, len - 4); channel_unregister (ch); } else { DSFYDEBUG ("Command 0x0d: Failed to find channel with ID %d\n", ntohs (*(unsigned short *) (payload + 2))); } return ret; }