11/*
2- Upload file uniquely on server.
2+ Upload files on server.
33*/
44void put_unique (char * arg ,char * user_input ,int sockfd )
55{
@@ -33,48 +33,59 @@ void put_unique(char *arg,char *user_input,int sockfd)
3333 while ((no_of_bytes = recv (sockfd ,message_from_server ,MAXSZ ,0 )) > 0 )
3434 {
3535 message_from_server [no_of_bytes ] = '\0' ;
36- printf ("%s\n " ,message_from_server );
36+ printf ("%s" ,message_from_server );
3737 fflush (stdout );
38- if (message_from_server [ no_of_bytes - 2 ] == '\r' && message_from_server [ no_of_bytes - 1 ] == '\n' )
38+ if (strstr ( message_from_server , "200 " ) > 0 || strstr ( message_from_server , "501 " ) > 0 || strstr ( message_from_server , "500 " ) > 0 || strstr ( message_from_server , "504 " ) > 0 || strstr ( message_from_server , "421 " ) > 0 || strstr ( message_from_server , "530 " ) > 0 )
3939 break ;
4040 }
41+ printf ("\n" );
42+
43+ if (strstr (message_from_server ,"501 " ) > 0 || strstr (message_from_server ,"500 " ) > 0 || strstr (message_from_server ,"504 " ) > 0 || strstr (message_from_server ,"421 " ) > 0 || strstr (message_from_server ,"530 " ) > 0 )
44+ return ;
4145
4246 /* Send request for PASSIVE connection */
4347 send (sockfd ,passive ,strlen (passive ),0 );
4448
4549 while ((no_of_bytes = recv (sockfd ,message_from_server ,MAXSZ ,0 )) > 0 )
4650 {
4751 message_from_server [no_of_bytes ] = '\0' ;
48- printf ("%s\n " ,message_from_server );
52+ printf ("%s" ,message_from_server );
4953 fflush (stdout );
50- if (message_from_server [ no_of_bytes - 2 ] == '\r' && message_from_server [ no_of_bytes - 1 ] == '\n' )
54+ if (strstr ( message_from_server , "227 " ) > 0 || strstr ( message_from_server , "501 " ) > 0 || strstr ( message_from_server , "500 " ) > 0 || strstr ( message_from_server , "502 " ) > 0 || strstr ( message_from_server , "421 " ) > 0 || strstr ( message_from_server , "530 " ) > 0 )
5155 break ;
5256
5357 }
58+ printf ("\n" );
59+
60+ if (strstr (message_from_server ,"501 " ) > 0 || strstr (message_from_server ,"500 " ) > 0 || strstr (message_from_server ,"502 " ) > 0 || strstr (message_from_server ,"421 " ) > 0 || strstr (message_from_server ,"530 " ) > 0 )
61+ return ;
5462
5563 /* Server accepts request and sends PORT variables */
56- if (strncmp (message_from_server ,"227" ,3 )== 0 )
64+ if (strncmp (message_from_server ,"227" ,3 ) == 0 )
5765 {
5866 /* Generate a PORT number using PORT variables */
5967 port = passive_port_number (message_from_server );
6068
6169 /* Connect to server using another PORT for file transfers */
6270 newsockfd = func_to_connect_passive (arg ,port );
71+ fcntl (newsockfd ,F_SETFL ,FNDELAY );
6372
6473 /* Send file name to server */
65- sprintf (file_name ,"STOU %s\r\n" ,user_input + 8 );
74+ sprintf (file_name ,"STOU %s\r\n" ,user_input + 4 );
6675 send (sockfd ,file_name ,strlen (file_name ),0 );
6776
6877 while ((no_of_bytes = recv (sockfd ,message_from_server ,MAXSZ ,0 )) > 0 )
6978 {
7079 message_from_server [no_of_bytes ] = '\0' ;
71- printf ("%s\n " ,message_from_server );
80+ printf ("%s" ,message_from_server );
7281 fflush (stdout );
73- if (message_from_server [ no_of_bytes - 2 ] == '\r' && message_from_server [ no_of_bytes - 1 ] == '\n' )
82+ if (strstr ( message_from_server , "125 " ) > 0 || strstr ( message_from_server , "150 " ) > 0 || strstr ( message_from_server , "501 " ) > 0 || strstr ( message_from_server , "500 " ) > 0 || strstr ( message_from_server , "452 " ) > 0 || strstr ( message_from_server , "421 " ) > 0 || strstr ( message_from_server , "530 " ) > 0 || strstr ( message_from_server , "553 " ) > 0 || strstr ( message_from_server , "532 " ) > 0 )
7483 break ;
7584 }
85+ printf ("\n" );
86+
7687 /* Send file data to server */
77- if (strncmp (message_from_server ,"150" ,3 )== 0 || strncmp (message_from_server ,"125" ,3 )== 0 )
88+ if (strncmp (message_from_server ,"150" ,3 ) == 0 || strncmp (message_from_server ,"125" ,3 ) == 0 )
7889 {
7990 sprintf (file ,"%s" ,user_input + 4 );
8091
@@ -99,7 +110,7 @@ void put_unique(char *arg,char *user_input,int sockfd)
99110 message_from_server [no_of_bytes ] = '\0' ;
100111 printf ("%s\n" ,message_from_server );
101112 fflush (stdout );
102- if (message_from_server [ no_of_bytes - 2 ] == '\r' && message_from_server [ no_of_bytes - 1 ] == '\n' )
113+ if (strstr ( message_from_server , "226 " ) > 0 )
103114 break ;
104115 }
105116 }
0 commit comments