Пример #1
0
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 );
}
Пример #2
0
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);

}
Пример #3
0
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 );
}