eventmachine 0.7.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/COPYING +44 -265
  2. data/GNU +281 -0
  3. data/LEGAL +25 -0
  4. data/README +5 -3
  5. data/RELEASE_NOTES +7 -2
  6. data/ext/binder.cpp +8 -15
  7. data/ext/binder.h +8 -15
  8. data/ext/cmain.cpp +29 -15
  9. data/ext/ed.cpp +36 -43
  10. data/ext/ed.h +8 -15
  11. data/ext/em.cpp +116 -21
  12. data/ext/em.h +11 -16
  13. data/ext/emwin.cpp +9 -16
  14. data/ext/emwin.h +9 -16
  15. data/ext/eventmachine.h +9 -14
  16. data/ext/extconf.rb +9 -17
  17. data/ext/files.cpp +7 -14
  18. data/ext/files.h +7 -14
  19. data/ext/page.cpp +8 -15
  20. data/ext/page.h +8 -15
  21. data/ext/project.h +15 -15
  22. data/ext/rubymain.cpp +37 -16
  23. data/ext/sigs.cpp +8 -15
  24. data/ext/sigs.h +8 -15
  25. data/ext/ssl.cpp +8 -15
  26. data/ext/ssl.h +8 -15
  27. data/lib/em/deferrable.rb +40 -27
  28. data/lib/em/eventable.rb +12 -23
  29. data/lib/em/future.rb +62 -0
  30. data/lib/eventmachine.rb +156 -66
  31. data/lib/eventmachine_version.rb +12 -23
  32. data/lib/evma.rb +15 -18
  33. data/lib/evma/callback.rb +16 -19
  34. data/lib/evma/container.rb +17 -19
  35. data/lib/evma/factory.rb +16 -19
  36. data/lib/evma/protocol.rb +17 -19
  37. data/lib/evma/reactor.rb +17 -19
  38. data/lib/pr_eventmachine.rb +12 -23
  39. data/lib/protocols/buftok.rb +121 -0
  40. data/lib/protocols/header_and_content.rb +12 -23
  41. data/lib/protocols/httpclient.rb +44 -31
  42. data/lib/protocols/line_and_text.rb +97 -118
  43. data/lib/protocols/tcptest.rb +12 -22
  44. data/tests/test_basic.rb +14 -24
  45. data/tests/test_eventables.rb +14 -24
  46. data/tests/test_exc.rb +57 -0
  47. data/tests/test_futures.rb +136 -0
  48. data/tests/test_hc.rb +14 -24
  49. data/tests/test_httpclient.rb +106 -25
  50. data/tests/test_ltp.rb +14 -23
  51. data/tests/test_timers.rb +109 -0
  52. data/tests/test_ud.rb +14 -24
  53. metadata +11 -2
data/LEGAL ADDED
@@ -0,0 +1,25 @@
1
+ LEGAL NOTICE INFORMATION
2
+ ------------------------
3
+
4
+ EventMachine is Copyright (C) 2006-07 by Francis Cianfrocca.
5
+
6
+ EventMachine is copyrighted software owned by Francis Cianfrocca
7
+ (blackhedd ... gmail.com). You may redistribute and/or modify this
8
+ software as long as you comply with either the terms of the GPL
9
+ (see the file GPL), or Ruby's license (see the file COPYING).
10
+
11
+ Your use of all the files in this distribution is controlled by these
12
+ license terms, except for those files specifically mentioned below:
13
+
14
+
15
+
16
+ setup.rb
17
+ This file is Copyright (C) 2000-2005 by Minero Aoki
18
+ You can distribute/modify this file under the terms of
19
+ the GNU LGPL, Lesser General Public License version 2.1.
20
+
21
+
22
+ lib/protocols/buftok.rb
23
+ This file is Copyright (C) 2007 by Tony Arcieri. This file is
24
+ covered by the terms of Ruby's License (see the file COPYING).
25
+
data/README CHANGED
@@ -1,12 +1,14 @@
1
- $Id: README 47 2006-05-15 21:42:38Z blackhedd $
1
+ $Id: README 317 2007-05-22 21:55:43Z blackhedd $
2
2
 
3
3
  = RUBY/EventMachine
4
4
 
5
5
  Homepage:: http://rubyeventmachine.com
6
- Copyright:: (C) 2006 by Francis Cianfrocca. All Rights Reserved.
6
+ Copyright:: (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
7
7
  Email:: gmail address: garbagecat10
8
8
 
9
- This program is made available under the terms of the Lesser-GPL version 2.
9
+ EventMachine is copyrighted free software made available under the terms
10
+ of either the GPL or Ruby's License. See the file COPYING for full licensing
11
+ information.
10
12
  See EventMachine and EventMachine::Connection for documentation and
11
13
  usage examples.
12
14
 
@@ -1,9 +1,14 @@
1
- $Id: RELEASE_NOTES 223 2006-08-08 20:30:41Z blackhedd $
1
+ $Id: RELEASE_NOTES 286 2006-11-28 03:18:18Z blackhedd $
2
2
 
3
3
  RUBY/EventMachine RELEASE NOTES
4
4
 
5
5
  --------------------------------------------------
6
- Version: 0.7.0, released xxAug06
6
+ Version: 0.7.1, released xxNov06
7
+ Added protocol handlers for line-oriented protocols.
8
+ Various bug fixes.
9
+
10
+ --------------------------------------------------
11
+ Version: 0.7.0, released 20Nov06
7
12
  Added a fix in em.cpp/ConnectToServer to fix a fatal exception that
8
13
  occurred in FreeBSD when connecting successfully to a remote server.
9
14
 
@@ -1,26 +1,19 @@
1
1
  /*****************************************************************************
2
2
 
3
- $Id: binder.cpp 47 2006-05-15 21:42:38Z blackhedd $
3
+ $Id: binder.cpp 318 2007-05-22 22:06:24Z blackhedd $
4
4
 
5
5
  File: binder.cpp
6
6
  Date: 07Apr06
7
7
 
8
- Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: garbagecat20
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
10
 
11
11
  This program is free software; you can redistribute it and/or modify
12
- it under the terms of the GNU General Public License as published by
13
- the Free Software Foundation; either version 2 of the License, or
14
- (at your option) any later version.
15
-
16
- This program is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU General Public License for more details.
20
-
21
- You should have received a copy of the GNU General Public License
22
- along with this program; if not, write to the Free Software
23
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
+
16
+ See the file COPYING for complete licensing information.
24
17
 
25
18
  *****************************************************************************/
26
19
 
@@ -1,26 +1,19 @@
1
1
  /*****************************************************************************
2
2
 
3
- $Id: binder.h 61 2006-05-17 04:58:31Z blackhedd $
3
+ $Id: binder.h 318 2007-05-22 22:06:24Z blackhedd $
4
4
 
5
5
  File: binder.h
6
6
  Date: 07Apr06
7
7
 
8
- Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: garbagecat20
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
10
 
11
11
  This program is free software; you can redistribute it and/or modify
12
- it under the terms of the GNU General Public License as published by
13
- the Free Software Foundation; either version 2 of the License, or
14
- (at your option) any later version.
15
-
16
- This program is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU General Public License for more details.
20
-
21
- You should have received a copy of the GNU General Public License
22
- along with this program; if not, write to the Free Software
23
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
+
16
+ See the file COPYING for complete licensing information.
24
17
 
25
18
  *****************************************************************************/
26
19
 
@@ -1,26 +1,19 @@
1
1
  /*****************************************************************************
2
2
 
3
- $Id: cmain.cpp 265 2006-10-05 19:07:45Z blackhedd $
3
+ $Id: cmain.cpp 318 2007-05-22 22:06:24Z blackhedd $
4
4
 
5
- File: libmain.cpp
5
+ File: cmain.cpp
6
6
  Date: 06Apr06
7
7
 
8
- Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: garbagecat20
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
10
 
11
11
  This program is free software; you can redistribute it and/or modify
12
- it under the terms of the GNU General Public License as published by
13
- the Free Software Foundation; either version 2 of the License, or
14
- (at your option) any later version.
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
15
 
16
- This program is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU General Public License for more details.
20
-
21
- You should have received a copy of the GNU General Public License
22
- along with this program; if not, write to the Free Software
23
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16
+ See the file COPYING for complete licensing information.
24
17
 
25
18
  *****************************************************************************/
26
19
 
@@ -93,6 +86,17 @@ extern "C" const char *evma_connect_to_server (const char *server, int port)
93
86
  return EventMachine->ConnectToServer (server, port);
94
87
  }
95
88
 
89
+ /***************************
90
+ evma_connect_to_unix_server
91
+ ***************************/
92
+
93
+ extern "C" const char *evma_connect_to_unix_server (const char *server)
94
+ {
95
+ if (!EventMachine)
96
+ throw std::runtime_error ("not initialized");
97
+ return EventMachine->ConnectToUnixServer (server);
98
+ }
99
+
96
100
 
97
101
  /**********************
98
102
  evma_create_tcp_server
@@ -276,3 +280,13 @@ extern "C" void evma_set_timer_quantum (int interval)
276
280
  EventMachine->SetTimerQuantum (interval);
277
281
  }
278
282
 
283
+ /******************
284
+ evma_setuid_string
285
+ ******************/
286
+
287
+ extern "C" void evma_setuid_string (const char *username)
288
+ {
289
+ // We do NOT need to be running an EM instance because this method is static.
290
+ EventMachine_t::SetuidString (username);
291
+ }
292
+
data/ext/ed.cpp CHANGED
@@ -1,26 +1,19 @@
1
1
  /*****************************************************************************
2
2
 
3
- $Id: ed.cpp 255 2006-09-15 11:21:15Z blackhedd $
3
+ $Id: ed.cpp 318 2007-05-22 22:06:24Z blackhedd $
4
4
 
5
5
  File: ed.cpp
6
6
  Date: 06Apr06
7
7
 
8
- Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: garbagecat20
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
10
 
11
11
  This program is free software; you can redistribute it and/or modify
12
- it under the terms of the GNU General Public License as published by
13
- the Free Software Foundation; either version 2 of the License, or
14
- (at your option) any later version.
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
15
 
16
- This program is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU General Public License for more details.
20
-
21
- You should have received a copy of the GNU General Public License
22
- along with this program; if not, write to the Free Software
23
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16
+ See the file COPYING for complete licensing information.
24
17
 
25
18
  *****************************************************************************/
26
19
 
@@ -51,37 +44,37 @@ EventableDescriptor::EventableDescriptor
51
44
  ****************************************/
52
45
 
53
46
  EventableDescriptor::EventableDescriptor (int sd):
54
- EventCallback (NULL),
55
- LastRead (0),
56
- LastWritten (0),
57
- MySocket (sd),
58
- bCloseNow (false),
59
- bCloseAfterWriting (false)
47
+ EventCallback (NULL),
48
+ LastRead (0),
49
+ LastWritten (0),
50
+ MySocket (sd),
51
+ bCloseNow (false),
52
+ bCloseAfterWriting (false)
60
53
  {
61
- /* There are three ways to close a socket, all of which should
62
- * automatically signal to the event machine that this object
63
- * should be removed from the polling scheduler.
64
- * First is a hard close, intended for bad errors or possible
65
- * security violations. It immediately closes the connection
66
- * and puts this object into an error state.
67
- * Second is to set bCloseNow, which will cause the event machine
68
- * to delete this object (and thus close the connection in our
69
- * destructor) the next chance it gets. bCloseNow also inhibits
70
- * the writing of new data on the socket (but not necessarily
71
- * the reading of new data).
72
- * The third way is to set bCloseAfterWriting, which inhibits
73
- * the writing of new data and converts to bCloseNow as soon
74
- * as everything in the outbound queue has been written.
75
- * bCloseAfterWriting is really for use only by protocol handlers
76
- * (for example, HTTP writes an HTML page and then closes the
77
- * connection). All of the error states we generate internally
78
- * cause an immediate close to be scheduled, which may have the
79
- * effect of discarding outbound data.
80
- */
54
+ /* There are three ways to close a socket, all of which should
55
+ * automatically signal to the event machine that this object
56
+ * should be removed from the polling scheduler.
57
+ * First is a hard close, intended for bad errors or possible
58
+ * security violations. It immediately closes the connection
59
+ * and puts this object into an error state.
60
+ * Second is to set bCloseNow, which will cause the event machine
61
+ * to delete this object (and thus close the connection in our
62
+ * destructor) the next chance it gets. bCloseNow also inhibits
63
+ * the writing of new data on the socket (but not necessarily
64
+ * the reading of new data).
65
+ * The third way is to set bCloseAfterWriting, which inhibits
66
+ * the writing of new data and converts to bCloseNow as soon
67
+ * as everything in the outbound queue has been written.
68
+ * bCloseAfterWriting is really for use only by protocol handlers
69
+ * (for example, HTTP writes an HTML page and then closes the
70
+ * connection). All of the error states we generate internally
71
+ * cause an immediate close to be scheduled, which may have the
72
+ * effect of discarding outbound data.
73
+ */
81
74
 
82
- if (sd == INVALID_SOCKET)
83
- throw std::runtime_error ("bad eventable descriptor");
84
- CreatedAt = gCurrentLoopTime;
75
+ if (sd == INVALID_SOCKET)
76
+ throw std::runtime_error ("bad eventable descriptor");
77
+ CreatedAt = gCurrentLoopTime;
85
78
  }
86
79
 
87
80
 
data/ext/ed.h CHANGED
@@ -1,26 +1,19 @@
1
1
  /*****************************************************************************
2
2
 
3
- $Id: ed.h 254 2006-09-15 11:17:01Z blackhedd $
3
+ $Id: ed.h 318 2007-05-22 22:06:24Z blackhedd $
4
4
 
5
5
  File: ed.h
6
6
  Date: 06Apr06
7
7
 
8
- Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: garbagecat20
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
10
 
11
11
  This program is free software; you can redistribute it and/or modify
12
- it under the terms of the GNU General Public License as published by
13
- the Free Software Foundation; either version 2 of the License, or
14
- (at your option) any later version.
15
-
16
- This program is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU General Public License for more details.
20
-
21
- You should have received a copy of the GNU General Public License
22
- along with this program; if not, write to the Free Software
23
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
+
16
+ See the file COPYING for complete licensing information.
24
17
 
25
18
  *****************************************************************************/
26
19
 
data/ext/em.cpp CHANGED
@@ -1,26 +1,19 @@
1
1
  /*****************************************************************************
2
2
 
3
- $Id: em.cpp 267 2006-10-25 02:02:02Z blackhedd $
3
+ $Id: em.cpp 318 2007-05-22 22:06:24Z blackhedd $
4
4
 
5
- File: ed.cpp
5
+ File: em.cpp
6
6
  Date: 06Apr06
7
7
 
8
- Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: garbagecat10
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
10
 
11
11
  This program is free software; you can redistribute it and/or modify
12
- it under the terms of the GNU General Public License as published by
13
- the Free Software Foundation; either version 2 of the License, or
14
- (at your option) any later version.
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
15
 
16
- This program is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU General Public License for more details.
20
-
21
- You should have received a copy of the GNU General Public License
22
- along with this program; if not, write to the Free Software
23
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16
+ See the file COPYING for complete licensing information.
24
17
 
25
18
  *****************************************************************************/
26
19
 
@@ -125,6 +118,35 @@ void EventMachine_t::SetTimerQuantum (int interval)
125
118
  }
126
119
 
127
120
 
121
+ /*************************************
122
+ (STATIC) EventMachine_t::SetuidString
123
+ *************************************/
124
+
125
+ void EventMachine_t::SetuidString (const char *username)
126
+ {
127
+ /* This method takes a caller-supplied username and tries to setuid
128
+ * to that user. There is no meaningful implementation (and no error)
129
+ * on Windows. On Unix, a failure to setuid the caller-supplied string
130
+ * causes a fatal abort, because presumably the program is calling us
131
+ * in order to fulfill a security requirement. If we fail silently,
132
+ * the user may continue to run with too much privilege.
133
+ */
134
+
135
+ #ifdef OS_UNIX
136
+ if (!username || !*username)
137
+ throw std::runtime_error ("setuid_string failed: no username specified");
138
+
139
+ struct passwd *p = getpwnam (username);
140
+ if (!p)
141
+ throw std::runtime_error ("setuid_string failed: unknown username");
142
+
143
+ if (setuid (p->pw_uid) != 0)
144
+ throw std::runtime_error ("setuid_string failed: no setuid");
145
+
146
+ // Success.
147
+ #endif
148
+ }
149
+
128
150
 
129
151
  /*********************************
130
152
  EventMachine_t::SignalLoopBreaker
@@ -234,7 +256,7 @@ bool EventMachine_t::_RunOnce()
234
256
  // if we know we're running on a 2.6 kernel.
235
257
  // epoll will be effective if we provide it as an alternative,
236
258
  // however it has the same problem interoperating with Ruby
237
- // threads that selct does.
259
+ // threads that select does.
238
260
 
239
261
  //cerr << "X";
240
262
 
@@ -617,6 +639,79 @@ const char *EventMachine_t::ConnectToServer (const char *server, int port)
617
639
  return out;
618
640
  }
619
641
 
642
+ /***********************************
643
+ EventMachine_t::ConnectToUnixServer
644
+ ***********************************/
645
+
646
+ const char *EventMachine_t::ConnectToUnixServer (const char *server)
647
+ {
648
+ /* Connect to a Unix-domain server, which by definition is running
649
+ * on the same host.
650
+ * There is no meaningful implementation on Windows.
651
+ * There's no need to do a nonblocking connect, since the connection
652
+ * is always local and can always be fulfilled immediately.
653
+ */
654
+
655
+ #ifdef OS_WIN32
656
+ throw std::runtime_error ("unix-domain connection unavailable on this platform");
657
+ return NULL;
658
+ #endif
659
+
660
+ // The whole rest of this function is only compiled on Unix systems.
661
+ #ifdef OS_UNIX
662
+
663
+ const char *out = NULL;
664
+
665
+ if (!server || !*server)
666
+ return NULL;
667
+
668
+ sockaddr_un pun;
669
+ memset (&pun, 0, sizeof(pun));
670
+ pun.sun_family = AF_LOCAL;
671
+
672
+ // You ordinarily expect the server name field to be at least 1024 bytes long,
673
+ // but on Linux it can be MUCH shorter.
674
+ if (strlen(server) >= sizeof(pun.sun_path))
675
+ throw std::runtime_error ("unix-domain server name is too long");
676
+
677
+
678
+ strcpy (pun.sun_path, server);
679
+
680
+ int fd = socket (AF_LOCAL, SOCK_STREAM, 0);
681
+ if (fd == INVALID_SOCKET)
682
+ return NULL;
683
+
684
+ // From here on, ALL error returns must close the socket.
685
+ // NOTE: At this point, the socket is still a blocking socket.
686
+ if (connect (fd, (struct sockaddr*)&pun, sizeof(pun)) != 0) {
687
+ closesocket (fd);
688
+ return NULL;
689
+ }
690
+
691
+ // Set the newly-connected socket nonblocking.
692
+ if (!SetSocketNonblocking (fd)) {
693
+ closesocket (fd);
694
+ return NULL;
695
+ }
696
+
697
+ // Set up a connection descriptor and add it to the event-machine.
698
+ // Observe, even though we know the connection status is connect-success,
699
+ // we still set the "pending" flag, so some needed initializations take
700
+ // place.
701
+ ConnectionDescriptor *cd = new ConnectionDescriptor (fd);
702
+ if (!cd)
703
+ throw std::runtime_error ("no connection allocated");
704
+ cd->SetConnectPending (true);
705
+ Add (cd);
706
+ out = cd->GetBinding().c_str();
707
+
708
+ if (out == NULL)
709
+ closesocket (fd);
710
+
711
+ return out;
712
+ #endif
713
+ }
714
+
620
715
 
621
716
  /*******************************
622
717
  EventMachine_t::CreateTcpServer
@@ -859,7 +954,7 @@ const char *EventMachine_t::CreateUnixDomainServer (const char *filename)
859
954
  #ifdef OS_UNIX
860
955
  const char *output_binding = NULL;
861
956
 
862
- struct sockaddr_un sun;
957
+ struct sockaddr_un s_sun;
863
958
 
864
959
  int sd_accept = socket (AF_LOCAL, SOCK_STREAM, 0);
865
960
  if (sd_accept == INVALID_SOCKET) {
@@ -870,9 +965,9 @@ const char *EventMachine_t::CreateUnixDomainServer (const char *filename)
870
965
  goto fail;
871
966
  unlink (filename);
872
967
 
873
- bzero (&sun, sizeof(sun));
874
- sun.sun_family = AF_LOCAL;
875
- strncpy (sun.sun_path, filename, sizeof(sun.sun_path)-1);
968
+ bzero (&s_sun, sizeof(s_sun));
969
+ s_sun.sun_family = AF_LOCAL;
970
+ strncpy (s_sun.sun_path, filename, sizeof(s_sun.sun_path)-1);
876
971
 
877
972
  // don't bother with reuseaddr for a local socket.
878
973
 
@@ -885,7 +980,7 @@ const char *EventMachine_t::CreateUnixDomainServer (const char *filename)
885
980
  #endif
886
981
  }
887
982
 
888
- if (bind (sd_accept, (struct sockaddr*)&sun, sizeof(sun))) {
983
+ if (bind (sd_accept, (struct sockaddr*)&s_sun, sizeof(s_sun))) {
889
984
  //__warning ("binding failed");
890
985
  goto fail;
891
986
  }