1 |
/* Start/stop data channel transfer |
/* Start/stop data channel transfer |
2 |
|
|
3 |
Copyright (C) 1997 Free Software Foundation, Inc. |
Copyright (C) 1997,2002 Free Software Foundation, Inc. |
4 |
|
Written by Miles Bader <miles@gnu.org> |
|
Written by Miles Bader <miles@gnu.ai.mit.edu> |
|
5 |
|
|
6 |
This program is free software; you can redistribute it and/or |
This program is free software; you can redistribute it and/or |
7 |
modify it under the terms of the GNU General Public License as |
modify it under the terms of the GNU General Public License as |
33 |
/* DCQ is a socket on which to listen for data connections from the server. */ |
/* DCQ is a socket on which to listen for data connections from the server. */ |
34 |
int dcq; |
int dcq; |
35 |
struct sockaddr *addr = conn->actv_data_addr; |
struct sockaddr *addr = conn->actv_data_addr; |
36 |
size_t addr_len = sizeof *addr; |
socklen_t addr_len = sizeof *addr; |
37 |
|
|
38 |
if (! addr) |
if (! addr) |
39 |
/* Generate an address for the data connection (which we must know, |
/* Generate an address for the data connection (which we must know, |
104 |
ftp_conn_finish_open_actv_data (struct ftp_conn *conn, int *data) |
ftp_conn_finish_open_actv_data (struct ftp_conn *conn, int *data) |
105 |
{ |
{ |
106 |
struct sockaddr_in rmt_addr; |
struct sockaddr_in rmt_addr; |
107 |
size_t rmt_addr_len = sizeof rmt_addr; |
socklen_t rmt_addr_len = sizeof rmt_addr; |
108 |
int real = accept (*data, &rmt_addr, &rmt_addr_len); |
int real = accept (*data, &rmt_addr, &rmt_addr_len); |
109 |
|
|
110 |
close (*data); |
close (*data); |