@@ -199,7 +199,6 @@ static int _open_with_http(const char *fullurl)
199199  n  =  netlib_parsehttpurl (fullurl , & port ,
200200                          hostname , sizeof (hostname ) -  1 ,
201201                          relurl , sizeof (relurl ) -  1 );
202- 
203202  if  (OK  !=  n )
204203    {
205204      printf ("netlib_parsehttpurl() returned %d\n" , n );
@@ -221,18 +220,30 @@ static int _open_with_http(const char *fullurl)
221220
222221  FAR  struct  hostent  * he ;
223222  he  =  gethostbyname (hostname );
223+   if  (!he )
224+     {
225+       close (s );
226+ 
227+       // DNS resolution failed 
228+       return  - ENETUNREACH ;
229+     }
224230
225231  memcpy (& server .sin_addr .s_addr ,
226232         he -> h_addr , sizeof (in_addr_t ));
227- 
228233  n  =  connect (s ,
229234              (struct  sockaddr  * )& server ,
230235              sizeof (struct  sockaddr_in ));
231- 
232236  if  (-1  ==  n )
233237    {
238+       int  err  =  errno ;
234239      close (s );
235-       return  -1 ;
240+       switch  (err )
241+         {
242+           case  ETIMEDOUT : return  - ETIMEDOUT ;
243+           case  ECONNREFUSED : return  - ECONNREFUSED ;
244+           case  ENETUNREACH : return  - ENETUNREACH ;
245+           default : return  -1 ;
246+         }
236247    }
237248
238249  /* Send GET request */ 
@@ -250,8 +261,24 @@ static int _open_with_http(const char *fullurl)
250261
251262  if  (200  !=  n )
252263    {
264+       int  err  =  errno ;
253265      close (s );
254-       return  -1 ;
266+       switch  (err )
267+         {
268+           // Unauthorized 
269+           case  401 : return  - EACCES ;
270+ 
271+           // No access 
272+           case  403 : return  - EACCES ;
273+ 
274+           case  404 : return  - ENOENT ;
275+ 
276+           // Server internal error 
277+           case  500 : return  - EREMOTEIO ;
278+ 
279+           // Other protocol errors 
280+           default :  return  - EPROTO ;
281+         }
255282    }
256283
257284  /* Skip response header */ 
@@ -1809,11 +1836,15 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
18091836  /* Test that the specified file exists */ 
18101837
18111838#ifdef  CONFIG_NXPLAYER_HTTP_STREAMING_SUPPORT 
1812-   if  ((pplayer -> fd  =  _open_with_http (pfilename )) ==  -1 )
1839+   pplayer -> fd  =  _open_with_http (pfilename );
1840+   if  (pplayer -> fd  <  0 )
18131841#else 
1814-   if  ((pplayer -> fd  =  open (pfilename , O_RDONLY )) ==  -1 )
1842+   pplayer -> fd  =  open (pfilename , O_RDONLY );
1843+   if  (pplayer -> fd  ==  -1 )
18151844#endif 
18161845    {
1846+       int  err  =  errno ;
1847+ 
18171848      /* File not found.  Test if its in the mediadir */ 
18181849
18191850#ifdef  CONFIG_NXPLAYER_INCLUDE_MEDIADIR 
@@ -1827,19 +1858,21 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
18271858          if  (nxplayer_mediasearch (pplayer , pfilename , path ,
18281859                                   sizeof (path )) !=  OK )
18291860            {
1830-               auderr ("ERROR: Could not find file\n" );
1831-               return  - ENOENT ;
1861+               auderr ("ERROR: Media search failed for %s: %s\n" ,
1862+                       pfilename , strerror (err ));
1863+               return  - err ;
18321864            }
18331865#else 
1834-           auderr ("ERROR: Could not open %s or %s\n" , pfilename , path );
1835-           return  - ENOENT ;
1866+           auderr ("ERROR: Could not open %s or %s: %s\n" ,
1867+                   pfilename , path , strerror (err ));
1868+           return  - err ;
18361869#endif  /* CONFIG_NXPLAYER_MEDIA_SEARCH */ 
18371870        }
18381871
18391872#else    /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */ 
18401873
1841-       auderr ("ERROR: Could not open %s\n" , pfilename );
1842-       return  - ENOENT ;
1874+       auderr ("ERROR: Could not open %s: %s \n" , pfilename ,  strerror ( err ) );
1875+       return  - err ;
18431876#endif  /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */ 
18441877    }
18451878
0 commit comments