return 1;
}
+/* Common functionality for socket.connect and socket.connect_ex.
+ *
+ * If *raise* is set:
+ * - On success, return 0.
+ * - On any failure, return -1 with an exception set.
+ * If *raise* is zero:
+ * - On success, return 0.
+ * - On connect() failure, return errno (without an exception set)
+ * - On other error, return -1 with an exception set.
+ *
+ * Note that -1 is a valid errno value on some systems.
+ */
static int
internal_connect(PySocketSockObject *s, struct sockaddr *addr, int addrlen,
int raise)
}
res = internal_connect(s, SAS2SA(&addrbuf), addrlen, 1);
- if (res < 0)
+ if (res < 0) {
+ assert(PyErr_Occurred());
return NULL;
+ }
Py_RETURN_NONE;
}
}
res = internal_connect(s, SAS2SA(&addrbuf), addrlen, 0);
- if (res < 0)
+ if (res == -1 && PyErr_Occurred()) {
return NULL;
+ }
return PyLong_FromLong((long) res);
}