リビジョン | 50 (tree) |
---|---|
日時 | 2009-12-03 00:13:30 |
作者 | hirohitohigashi |
add error check
@@ -42,7 +42,7 @@ | ||
42 | 42 | struct timeval tval; |
43 | 43 | |
44 | 44 | ftp->timeout_sec = sec; |
45 | - if( ftp->socket <= 0 ) { | |
45 | + if( ftp->socket < 0 ) { | |
46 | 46 | return LIBOFTP_NOERROR; |
47 | 47 | } |
48 | 48 |
@@ -40,6 +40,8 @@ | ||
40 | 40 | char str1[512]; |
41 | 41 | int res; |
42 | 42 | |
43 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
44 | + | |
43 | 45 | /* |
44 | 46 | * send CWD command |
45 | 47 | */ |
@@ -42,6 +42,8 @@ | ||
42 | 42 | int res; |
43 | 43 | char *p1, *p2; |
44 | 44 | |
45 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
46 | + | |
45 | 47 | /* |
46 | 48 | * send PWD command |
47 | 49 | */ |
@@ -65,6 +65,7 @@ | ||
65 | 65 | int ftp_initialize( LIBOFTP *ftp ) |
66 | 66 | { |
67 | 67 | memset( ftp, 0, sizeof( LIBOFTP ) ); |
68 | + ftp->socket = -1; | |
68 | 69 | ftp->timeout_sec = 10; /* default timeout */ |
69 | 70 | |
70 | 71 | return LIBOFTP_NOERROR; |
@@ -87,6 +88,7 @@ | ||
87 | 88 | struct hostent *p_hostent; |
88 | 89 | int res; |
89 | 90 | |
91 | + if( ftp->socket >= 0 ) return LIBOFTP_ERROR; | |
90 | 92 | if( port == 0 ) port = 21; |
91 | 93 | |
92 | 94 | /* |
@@ -109,7 +111,7 @@ | ||
109 | 111 | if( ftp->socket < 0 ) { |
110 | 112 | DEBUGPRINT1( "can't create socket. %s\n", strerror(errno) ); |
111 | 113 | copy_strerror(); |
112 | - ftp->socket = 0; | |
114 | + ftp->socket = -1; | |
113 | 115 | return LIBOFTP_ERROR_OS; |
114 | 116 | } |
115 | 117 |
@@ -117,7 +119,7 @@ | ||
117 | 119 | DEBUGPRINT1( "can't connect socket. %s\n", strerror(errno) ); |
118 | 120 | copy_strerror(); |
119 | 121 | close( ftp->socket ); |
120 | - ftp->socket = 0; | |
122 | + ftp->socket = -1; | |
121 | 123 | return LIBOFTP_ERROR_OS; |
122 | 124 | } |
123 | 125 |
@@ -124,7 +126,7 @@ | ||
124 | 126 | res = ftp_timeout( ftp, ftp->timeout_sec ); |
125 | 127 | if( res < 0 ) { |
126 | 128 | close( ftp->socket ); |
127 | - ftp->socket = 0; | |
129 | + ftp->socket = -1; | |
128 | 130 | return res; |
129 | 131 | } |
130 | 132 |
@@ -135,7 +137,7 @@ | ||
135 | 137 | if( res != 220 ) { /* 220: Service ready for new user. */ |
136 | 138 | DEBUGPRINT1( "Illegal response. %d\n", res ); |
137 | 139 | close( ftp->socket ); |
138 | - ftp->socket = 0; | |
140 | + ftp->socket = -1; | |
139 | 141 | return res < 0? res: LIBOFTP_ERROR_PROTOCOL; |
140 | 142 | } |
141 | 143 |
@@ -49,6 +49,8 @@ | ||
49 | 49 | const char *p = buf; |
50 | 50 | int n, res; |
51 | 51 | |
52 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
53 | + | |
52 | 54 | /* |
53 | 55 | * 送信準備 |
54 | 56 | */ |
@@ -40,6 +40,8 @@ | ||
40 | 40 | char str1[512]; |
41 | 41 | int res; |
42 | 42 | |
43 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
44 | + | |
43 | 45 | /* |
44 | 46 | * send DELE command |
45 | 47 | */ |
@@ -40,6 +40,8 @@ | ||
40 | 40 | char str1[512]; |
41 | 41 | int res; |
42 | 42 | |
43 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
44 | + | |
43 | 45 | /* |
44 | 46 | * send SITE command |
45 | 47 | */ |
@@ -40,6 +40,8 @@ | ||
40 | 40 | char str1[512]; |
41 | 41 | int res; |
42 | 42 | |
43 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
44 | + | |
43 | 45 | /* |
44 | 46 | * send MKD command |
45 | 47 | */ |
@@ -39,6 +39,8 @@ | ||
39 | 39 | { |
40 | 40 | int data_socket; |
41 | 41 | |
42 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
43 | + | |
42 | 44 | if( ftp->flag_passive ) { |
43 | 45 | data_socket = ftp_getready_pasv( ftp, "STOR", fname ); |
44 | 46 | } else { |
@@ -61,6 +63,8 @@ | ||
61 | 63 | { |
62 | 64 | int data_socket; |
63 | 65 | |
66 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
67 | + | |
64 | 68 | if( ftp->flag_passive ) { |
65 | 69 | data_socket = ftp_getready_pasv( ftp, "APPE", fname ); |
66 | 70 | } else { |
@@ -88,6 +92,8 @@ | ||
88 | 92 | */ |
89 | 93 | close( desc ); |
90 | 94 | |
95 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
96 | + | |
91 | 97 | /* |
92 | 98 | * receive response. |
93 | 99 | */ |
@@ -41,6 +41,8 @@ | ||
41 | 41 | char str1[512]; |
42 | 42 | int res; |
43 | 43 | |
44 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
45 | + | |
44 | 46 | /* |
45 | 47 | * send RNFR command |
46 | 48 | */ |
@@ -51,6 +51,8 @@ | ||
51 | 51 | char buf[TRANSFER_SEGMENT_SIZE]; |
52 | 52 | int res; |
53 | 53 | |
54 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
55 | + | |
54 | 56 | /* |
55 | 57 | * ローカルファイルオープン |
56 | 58 | */ |
@@ -49,6 +49,8 @@ | ||
49 | 49 | char *p = buf; |
50 | 50 | int res; |
51 | 51 | |
52 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
53 | + | |
52 | 54 | /* |
53 | 55 | * 受信準備 |
54 | 56 | */ |
@@ -39,6 +39,8 @@ | ||
39 | 39 | { |
40 | 40 | int data_socket; |
41 | 41 | |
42 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
43 | + | |
42 | 44 | if( ftp->flag_passive ) { |
43 | 45 | data_socket = ftp_getready_pasv( ftp, "RETR", fname ); |
44 | 46 | } else { |
@@ -67,6 +69,8 @@ | ||
67 | 69 | */ |
68 | 70 | close( desc ); |
69 | 71 | |
72 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
73 | + | |
70 | 74 | /* |
71 | 75 | * receive response. |
72 | 76 | */ |
@@ -40,6 +40,8 @@ | ||
40 | 40 | char str1[512]; |
41 | 41 | int res; |
42 | 42 | |
43 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
44 | + | |
43 | 45 | /* |
44 | 46 | * send RMD command |
45 | 47 | */ |
@@ -52,6 +52,7 @@ | ||
52 | 52 | int fd; |
53 | 53 | char buf[TRANSFER_SEGMENT_SIZE]; |
54 | 54 | |
55 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
55 | 56 | |
56 | 57 | /* |
57 | 58 | * ローカルファイルオープン |
@@ -43,6 +43,8 @@ | ||
43 | 43 | char str1[256]; |
44 | 44 | int res; |
45 | 45 | |
46 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
47 | + | |
46 | 48 | /* |
47 | 49 | * send user name. |
48 | 50 | */ |
@@ -98,5 +100,3 @@ | ||
98 | 100 | |
99 | 101 | return LIBOFTP_NOERROR; |
100 | 102 | } |
101 | - | |
102 | - |
@@ -44,6 +44,8 @@ | ||
44 | 44 | char str1[256]; |
45 | 45 | int res; |
46 | 46 | |
47 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
48 | + | |
47 | 49 | if( strcmp( type, "ascii" ) == 0 ) { |
48 | 50 | snprintf( str1, sizeof(str1)-1, "TYPE A\r\n" ); |
49 | 51 | ftp->data_type = ASCII; |
@@ -39,6 +39,8 @@ | ||
39 | 39 | char str1[] = "QUIT\r\n"; |
40 | 40 | int res; |
41 | 41 | |
42 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
43 | + | |
42 | 44 | /* |
43 | 45 | * send QUIT command |
44 | 46 | */ |
@@ -61,7 +63,7 @@ | ||
61 | 63 | */ |
62 | 64 | CLOSE: |
63 | 65 | close( ftp->socket ); |
64 | - ftp->socket = 0; | |
66 | + ftp->socket = -1; | |
65 | 67 | |
66 | 68 | return res; |
67 | 69 | } |
@@ -39,6 +39,8 @@ | ||
39 | 39 | int ret; |
40 | 40 | int i; |
41 | 41 | |
42 | + if( ftp->socket < 0 ) return LIBOFTP_ERROR; | |
43 | + | |
42 | 44 | /* |
43 | 45 | * send "CRLF" only |
44 | 46 | */ |