@@ -199,7 +199,6 @@ static int _open_with_http(const char *fullurl)
199
199
n = netlib_parsehttpurl (fullurl , & port ,
200
200
hostname , sizeof (hostname ) - 1 ,
201
201
relurl , sizeof (relurl ) - 1 );
202
-
203
202
if (OK != n )
204
203
{
205
204
printf ("netlib_parsehttpurl() returned %d\n" , n );
@@ -221,18 +220,28 @@ static int _open_with_http(const char *fullurl)
221
220
222
221
FAR struct hostent * he ;
223
222
he = gethostbyname (hostname );
223
+ if (!he )
224
+ {
225
+ close (s );
226
+ return - ENETUNREACH ; /* DNS resolution failed */
227
+ }
224
228
225
229
memcpy (& server .sin_addr .s_addr ,
226
230
he -> h_addr , sizeof (in_addr_t ));
227
-
228
231
n = connect (s ,
229
232
(struct sockaddr * )& server ,
230
233
sizeof (struct sockaddr_in ));
231
-
232
234
if (-1 == n )
233
235
{
236
+ int err = errno ;
234
237
close (s );
235
- return -1 ;
238
+ switch (err )
239
+ {
240
+ case ETIMEDOUT : return - ETIMEDOUT ;
241
+ case ECONNREFUSED : return - ECONNREFUSED ;
242
+ case ENETUNREACH : return - ENETUNREACH ;
243
+ default : return -1 ;
244
+ }
236
245
}
237
246
238
247
/* Send GET request */
@@ -250,8 +259,16 @@ static int _open_with_http(const char *fullurl)
250
259
251
260
if (200 != n )
252
261
{
262
+ int err = errno ;
253
263
close (s );
254
- return -1 ;
264
+ switch (err )
265
+ {
266
+ case 401 : return - EACCES ; /* No Access */
267
+ case 403 : return - EACCES ; /* No Access */
268
+ case 404 : return - ENOENT ;
269
+ case 500 : return - EREMOTEIO ; /* Server internal error */
270
+ default : return - EPROTO ; /* Other protocol error */
271
+ }
255
272
}
256
273
257
274
/* Skip response header */
@@ -1809,11 +1826,15 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
1809
1826
/* Test that the specified file exists */
1810
1827
1811
1828
#ifdef CONFIG_NXPLAYER_HTTP_STREAMING_SUPPORT
1812
- if ((pplayer -> fd = _open_with_http (pfilename )) == -1 )
1829
+ pplayer -> fd = _open_with_http (pfilename );
1830
+ if (pplayer -> fd < 0 )
1813
1831
#else
1814
- if ((pplayer -> fd = open (pfilename , O_RDONLY )) == -1 )
1832
+ pplayer -> fd = open (pfilename , O_RDONLY );
1833
+ if (pplayer -> fd == -1 )
1815
1834
#endif
1816
1835
{
1836
+ int err = errno ;
1837
+
1817
1838
/* File not found. Test if its in the mediadir */
1818
1839
1819
1840
#ifdef CONFIG_NXPLAYER_INCLUDE_MEDIADIR
@@ -1827,19 +1848,21 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
1827
1848
if (nxplayer_mediasearch (pplayer , pfilename , path ,
1828
1849
sizeof (path )) != OK )
1829
1850
{
1830
- auderr ("ERROR: Could not find file\n" );
1831
- return - ENOENT ;
1851
+ auderr ("ERROR: Media search failed for %s: %s\n" ,
1852
+ pfilename , strerror (err ));
1853
+ return - err ;
1832
1854
}
1833
1855
#else
1834
- auderr ("ERROR: Could not open %s or %s\n" , pfilename , path );
1835
- return - ENOENT ;
1856
+ auderr ("ERROR: Could not open %s or %s: %s\n" ,
1857
+ pfilename , path , strerror (err ));
1858
+ return - err ;
1836
1859
#endif /* CONFIG_NXPLAYER_MEDIA_SEARCH */
1837
1860
}
1838
1861
1839
1862
#else /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */
1840
1863
1841
- auderr ("ERROR: Could not open %s\n" , pfilename );
1842
- return - ENOENT ;
1864
+ auderr ("ERROR: Could not open %s: %s \n" , pfilename , strerror ( err ) );
1865
+ return - err ;
1843
1866
#endif /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */
1844
1867
}
1845
1868
0 commit comments