summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--extmod/modusocket.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/extmod/modusocket.c b/extmod/modusocket.c
index 429750bf80..cedb2cc9a9 100644
--- a/extmod/modusocket.c
+++ b/extmod/modusocket.c
@@ -331,6 +331,12 @@ STATIC mp_obj_t socket_setsockopt(size_t n_args, const mp_obj_t *args) {
val = mp_obj_get_int_truncated(args[3]);
optval = &val;
optlen = sizeof(val);
+ } else if (opt == 20 && args[3] == mp_const_none) {
+ optval = MP_OBJ_NULL;
+ optlen = 0;
+ } else if (opt == 20 && mp_obj_is_callable(args[3])) {
+ optval = args[3];
+ optlen = sizeof(optval);
} else {
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(args[3], &bufinfo, MP_BUFFER_READ);