static int cygterm_accepting(Plug plug, OSSocket sock) { Local local = (Local)plug; cygterm_debug("top"); local->s = sk_register(sock, plug); sk_set_frozen(local->s, 0); /* Reset terminal size */ cygterm_size(local, conf_get_int(local->conf, CONF_width), conf_get_int(local->conf, CONF_height)); cygterm_debug("OK"); return 0; }
static int pfd_accepting(Plug p, void *sock) { static struct plug_function_table fn_table = { pfd_closing, pfd_receive, pfd_sent, NULL }; struct PFwdPrivate *pr, *org; Socket s; char *err; org = (struct PFwdPrivate *)p; pr = (struct PFwdPrivate *) smalloc(sizeof(struct PFwdPrivate)); pr->fn = &fn_table; pr->c = NULL; pr->s = s = sk_register(sock, (Plug) pr); if ((err = sk_socket_error(s))) { sfree(pr); return err != NULL; } pr->c = new_sock_channel(s); strcpy(pr->hostname, org->hostname); pr->port = org->port; pr->throttled = pr->throttle_override = 0; pr->ready = 0; pr->waiting = NULL; sk_set_private_ptr(s, pr); if (pr->c == NULL) { sfree(pr); return 1; } else { /* asks to forward to the specified host/port for this */ ssh_send_port_open(pr->c, pr->hostname, pr->port, "forwarding"); } return 0; }