]> jfr.im git - irc.git/blob - software/RELEASES/ircservices/achurch.org/services/lists/ircservices-coding/2002/000550.html
rename -> *.git
[irc.git] / software / RELEASES / ircservices / achurch.org / services / lists / ircservices-coding / 2002 / 000550.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2 <HTML>
3 <HEAD>
4 <TITLE> [IRCServices Coding] ircservices5.0a28 various
5 </TITLE>
6 <LINK REL="Index" HREF="index.html" >
7 <LINK REL="made" HREF="mailto:ircservices-coding%40ircservices.za.net?Subject=%5BIRCServices%20Coding%5D%20ircservices5.0a28%20various&In-Reply-To=3cb8ede0.13655%40achurch.org">
8 <META NAME="robots" CONTENT="index,nofollow">
9 <META http-equiv="Content-Type" content="text/html; charset=us-ascii">
10 <LINK REL="Previous" HREF="000549.html">
11 <LINK REL="Next" HREF="000551.html">
12 </HEAD>
13 <BODY BGCOLOR="#ffffff">
14 <H1>[IRCServices Coding] ircservices5.0a28 various</H1>
15 <B>V13</B>
16 <A HREF="mailto:ircservices-coding%40ircservices.za.net?Subject=%5BIRCServices%20Coding%5D%20ircservices5.0a28%20various&In-Reply-To=3cb8ede0.13655%40achurch.org"
17 TITLE="[IRCServices Coding] ircservices5.0a28 various">v13 at it.teithe.gr
18 </A><BR>
19 <I>Sun Apr 14 05:22:01 PDT 2002</I>
20 <P><UL>
21 <LI>Previous message: <A HREF="000549.html">[IRCServices Coding] ircservices5.0a28 various
22 </A></li>
23 <LI>Next message: <A HREF="000551.html">[IRCServices Coding] ircservices5.0a28 various
24 </A></li>
25 <LI> <B>Messages sorted by:</B>
26 <a href="date.html#550">[ date ]</a>
27 <a href="thread.html#550">[ thread ]</a>
28 <a href="subject.html#550">[ subject ]</a>
29 <a href="author.html#550">[ author ]</a>
30 </LI>
31 </UL>
32 <HR>
33 <!--beginarticle-->
34 <PRE>On Sunday 14 April 2002 14:46, Andrew Church wrote:
35 &gt;<i> &quot;Already connected&quot; sounds like it's ignoring the fact that the socket
36 </I>&gt;<i> is non-blocking (or maybe my logic is wrong).
37 </I>
38 I'm not 100% sure about this.. anyway...
39
40 In sockets.c:482:
41
42 if ((i = connect(fd, (struct sockaddr *)&amp;sa, sizeof(sa))) &lt; 0
43 &amp;&amp; errno != EINPROGRESS
44
45 and after that:
46
47 if (i == 0) {
48 s-&gt;flags |= SF_CONNECTED;
49 FD_SET(fd, &amp;sock_fds);
50 if (s-&gt;cb_connect)
51 s-&gt;cb_connect(s, 0);
52 } else {
53 s-&gt;flags |= SF_CONNECTING;
54 FD_SET(fd, &amp;write_fds);
55 }
56
57 So a non blocking connect() returns EINPROGRESS and (s-&gt;flags &amp; SF_CONNECTING)
58 is true..
59
60 After that, when the connection is established, in sockets.c:296 in function
61 check_sockets():
62
63 } else if (s-&gt;flags &amp; SF_CONNECTING) {
64 /* Connection established (or failed) */
65 if (debug &gt;= 2)
66 log(&quot;debug: sockets: connect on fd %d returned&quot;, i);
67 res = connect(s-&gt;fd, (struct sockaddr *)&amp;s-&gt;remote,
68 sizeof(s-&gt;remote));
69
70 So you're calling connect() twice and the 2nd call is done when the socket
71 *IS* connected, since writeability indicates the connection is established.
72
73 &gt;<i> --Andrew Church
74 </I>&lt;&lt;V13&gt;&gt;
75
76 </PRE>
77
78 <!--endarticle-->
79 <HR>
80 <P><UL>
81 <!--threads-->
82 <LI>Previous message: <A HREF="000549.html">[IRCServices Coding] ircservices5.0a28 various
83 </A></li>
84 <LI>Next message: <A HREF="000551.html">[IRCServices Coding] ircservices5.0a28 various
85 </A></li>
86 <LI> <B>Messages sorted by:</B>
87 <a href="date.html#550">[ date ]</a>
88 <a href="thread.html#550">[ thread ]</a>
89 <a href="subject.html#550">[ subject ]</a>
90 <a href="author.html#550">[ author ]</a>
91 </LI>
92 </UL>
93
94 </body></html>