@@ -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,35 @@ 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 :
241
+ return - ETIMEDOUT ;
242
+
243
+ case ECONNREFUSED :
244
+ return - ECONNREFUSED ;
245
+
246
+ case ENETUNREACH :
247
+ return - ENETUNREACH ;
248
+
249
+ default :
250
+ return -1 ;
251
+ }
236
252
}
237
253
238
254
/* Send GET request */
@@ -250,8 +266,25 @@ static int _open_with_http(const char *fullurl)
250
266
251
267
if (200 != n )
252
268
{
269
+ int err = errno ;
253
270
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
+ }
255
288
}
256
289
257
290
/* Skip response header */
@@ -1809,11 +1842,15 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
1809
1842
/* Test that the specified file exists */
1810
1843
1811
1844
#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 )
1813
1847
#else
1814
- if ((pplayer -> fd = open (pfilename , O_RDONLY )) == -1 )
1848
+ pplayer -> fd = open (pfilename , O_RDONLY );
1849
+ if (pplayer -> fd == -1 )
1815
1850
#endif
1816
1851
{
1852
+ int err = errno ;
1853
+
1817
1854
/* File not found. Test if its in the mediadir */
1818
1855
1819
1856
#ifdef CONFIG_NXPLAYER_INCLUDE_MEDIADIR
@@ -1827,19 +1864,21 @@ static int nxplayer_playinternal(FAR struct nxplayer_s *pplayer,
1827
1864
if (nxplayer_mediasearch (pplayer , pfilename , path ,
1828
1865
sizeof (path )) != OK )
1829
1866
{
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 ;
1832
1870
}
1833
1871
#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 ;
1836
1875
#endif /* CONFIG_NXPLAYER_MEDIA_SEARCH */
1837
1876
}
1838
1877
1839
1878
#else /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */
1840
1879
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 ;
1843
1882
#endif /* CONFIG_NXPLAYER_INCLUDE_MEDIADIR */
1844
1883
}
1845
1884
0 commit comments