void msn_ftp_transfer_request( struct im_connection *ic, file_transfer_t *file, char *who ) { unsigned int cookie = time( NULL ); /* TODO: randomize */ char buf[2048]; msn_filetransfer_t *msn_file = g_new0( msn_filetransfer_t, 1 ); file->data = msn_file; file->free = msn_ftp_free; file->canceled = msn_ftp_canceled; file->write = msn_ftps_write; msn_file->md = ic->proto_data; msn_file->invite_cookie = cookie; msn_file->handle = g_strdup( who ); msn_file->dcc = file; msn_file->md->filetransfers = g_slist_prepend( msn_file->md->filetransfers, msn_file->dcc ); msn_file->fd = -1; msn_file->sbufpos = 3; g_snprintf( buf, sizeof( buf ), "Application-Name: File Transfer\r\n" "Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}\r\n" "Application-File: %s\r\n" "Application-FileSize: %zd\r\n", file->file_name, file->file_size); msn_ftp_invitation_cmd( msn_file->md->ic, msn_file->handle, cookie, "INVITE", buf ); imcb_file_recv_start( file ); }
void jabber_si_transfer_start(struct jabber_transfer *tf) { if (!jabber_si_check_features(tf, tf->bud->features)) { return; } /* send the request to our buddy */ jabber_si_send_request(tf->ic, tf->bud->full_jid, tf); /* and start the receive logic */ imcb_file_recv_start(tf->ic, tf->ft); }
void purple_transfer_request( struct im_connection *ic, file_transfer_t *ft, char *handle ) { PurpleAccount *pa = ic->proto_data; struct prpl_xfer_data *px; /* xfer_new() will pick up this variable. It's a hack but we're not multi-threaded anyway. */ next_ft = ft; serv_send_file( purple_account_get_connection( pa ), handle, ft->file_name ); ft->write = prpl_xfer_write; px = ft->data; imcb_file_recv_start( ft ); px->ready_timer = b_timeout_add( 100, prplcb_xfer_send_cb, px ); }