@@ -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,35 @@ 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+ return - ENETUNREACH ; /* DNS resolution failed */
227+ }
224228
225229 memcpy (& server .sin_addr .s_addr ,
226230 he -> h_addr , sizeof (in_addr_t ));
227-
228231 n = connect (s ,
229232 (struct sockaddr * )& server ,
230233 sizeof (struct sockaddr_in ));
231-
232234 if (-1 == n )
233235 {
236+ int err = errno ;
234237 close (s );
235- return -1 ;
238+ switch (err )
239+ {
240+ case ETIMEDOUT :
241+ return - ETIMEDOUT ;
242+
243+ case ECONNREFUSED :
244+ return - ECONNREFUSED ;
245+
246+ case ENETUNREACH :
247+ return - ENETUNREACH ;
248+
249+ default :
250+ return -1 ;
251+ }
236252 }
237253
238254 /* Send GET request */
@@ -250,8 +266,25 @@ static int _open_with_http(const char *fullurl)
250266
251267 if (200 != n )
252268 {
269+ int err = errno ;
253270 close (s );
254- return -1 ;
271+ switch (err )
272+ {
273+ case 401 :
274+ return - EACCES ; /* No Access */
275+
276+ case 403 :
277+ return - EACCES ; /* No Access */
278+
279+ case 404 :
280+ return - ENOENT ;
281+
282+ case 500 :
283+ return - EREMOTEIO ; /* Server internal error */
284+
285+ default :
286+ return - EPROTO ; /* Other protocol error */
287+ }
255288 }
256289
257290 /* Skip response header */
@@ -1809,11 +1842,15 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
18091842 /* Test that the specified file exists */
18101843
18111844#ifdef CONFIG_NXPLAYER_HTTP_STREAMING_SUPPORT
1812- if ((pplayer -> fd = _open_with_http (pfilename )) == -1 )
1845+ pplayer -> fd = _open_with_http (pfilename );
1846+ if (pplayer -> fd < 0 )
18131847#else
1814- if ((pplayer -> fd = open (pfilename , O_RDONLY )) == -1 )
1848+ pplayer -> fd = open (pfilename , O_RDONLY );
1849+ if (pplayer -> fd == -1 )
18151850#endif
18161851 {
1852+ int err = errno ;
1853+
18171854 /* File not found. Test if its in the mediadir */
18181855
18191856#ifdef CONFIG_NXPLAYER_INCLUDE_MEDIADIR
@@ -1827,19 +1864,21 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
18271864 if (nxplayer_mediasearch (pplayer , pfilename , path ,
18281865 sizeof (path )) != OK )
18291866 {
1830- auderr ("ERROR: Could not find file\n" );
1831- return - ENOENT ;
1867+ auderr ("ERROR: Media search failed for %s: %s\n" ,
1868+ pfilename , strerror (err ));
1869+ return - err ;
18321870 }
18331871#else
1834- auderr ("ERROR: Could not open %s or %s\n" , pfilename , path );
1835- return - ENOENT ;
1872+ auderr ("ERROR: Could not open %s or %s: %s\n" ,
1873+ pfilename , path , strerror (err ));
1874+ return - err ;
18361875#endif /* CONFIG_NXPLAYER_MEDIA_SEARCH */
18371876 }
18381877
18391878#else /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */
18401879
1841- auderr ("ERROR: Could not open %s\n" , pfilename );
1842- return - ENOENT ;
1880+ auderr ("ERROR: Could not open %s: %s \n" , pfilename , strerror ( err ) );
1881+ return - err ;
18431882#endif /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */
18441883 }
18451884
0 commit comments