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