@@ -359,35 +359,32 @@ STATIC mp_uint_t socket_stream_write(mp_obj_t self_in, const void *buf, mp_uint_
359
359
STATIC mp_uint_t socket_stream_ioctl (mp_obj_t self_in , mp_uint_t request , uintptr_t arg , int * errcode ) {
360
360
socket_obj_t * socket = self_in ;
361
361
if (request == MP_STREAM_POLL ) {
362
- char buf [1 ];
363
- mp_uint_t ret = 0 ;
364
- if (arg & MP_STREAM_POLL_RD ) {
365
- int r = lwip_recvfrom_r (socket -> fd , buf , 1 , MSG_DONTWAIT | MSG_PEEK , NULL , NULL );
366
- if (r > 0 ) ret |= MP_STREAM_POLL_RD ;
367
- }
368
- if (arg & (MP_STREAM_POLL_WR | MP_STREAM_POLL_HUP )) {
369
- fd_set wfds ; FD_ZERO (& wfds );
370
- fd_set efds ; FD_ZERO (& efds );
371
- struct timeval timeout = { .tv_sec = 0 , .tv_usec = 0 };
372
- if (arg & MP_STREAM_POLL_WR ) FD_SET (socket -> fd , & wfds );
373
- if (arg & MP_STREAM_POLL_HUP ) FD_SET (socket -> fd , & efds );
374
- int r = select ((socket -> fd )+ 1 , NULL , & wfds , & efds , & timeout );
375
- if (r < 0 ) {
376
- * errcode = MP_EIO ;
377
- return MP_STREAM_ERROR ;
378
- }
379
- if (FD_ISSET (socket -> fd , & wfds )) ret |= MP_STREAM_POLL_WR ;
380
- if (FD_ISSET (socket -> fd , & efds )) ret |= MP_STREAM_POLL_HUP ;
362
+
363
+ fd_set rfds ; FD_ZERO (& rfds );
364
+ fd_set wfds ; FD_ZERO (& wfds );
365
+ fd_set efds ; FD_ZERO (& efds );
366
+ struct timeval timeout = { .tv_sec = 0 , .tv_usec = 0 };
367
+ if (arg & MP_STREAM_POLL_RD ) FD_SET (socket -> fd , & rfds );
368
+ if (arg & MP_STREAM_POLL_WR ) FD_SET (socket -> fd , & wfds );
369
+ if (arg & MP_STREAM_POLL_HUP ) FD_SET (socket -> fd , & efds );
370
+
371
+ int r = select ((socket -> fd )+ 1 , & rfds , & wfds , & efds , & timeout );
372
+ if (r < 0 ) {
373
+ * errcode = MP_EIO ;
374
+ return MP_STREAM_ERROR ;
381
375
}
376
+
377
+ mp_uint_t ret = 0 ;
378
+ if (FD_ISSET (socket -> fd , & rfds )) ret |= MP_STREAM_POLL_RD ;
379
+ if (FD_ISSET (socket -> fd , & wfds )) ret |= MP_STREAM_POLL_WR ;
380
+ if (FD_ISSET (socket -> fd , & efds )) ret |= MP_STREAM_POLL_HUP ;
382
381
return ret ;
383
382
}
384
383
385
384
* errcode = MP_EINVAL ;
386
385
return MP_STREAM_ERROR ;
387
386
}
388
387
389
- // XXX TODO missing methods ...
390
-
391
388
STATIC const mp_map_elem_t socket_locals_dict_table [] = {
392
389
{ MP_OBJ_NEW_QSTR (MP_QSTR___del__ ), (mp_obj_t )& socket_close_obj },
393
390
{ MP_OBJ_NEW_QSTR (MP_QSTR_close ), (mp_obj_t )& socket_close_obj },
0 commit comments