(re-send because [EMAIL PROTECTED] (550 unknown user) => ???)
Hi Ian,
So, for one email, you get three in return... good investment :)
Mine is about signals:
We can definitly *not* modify the message handler because we are a
library... otherwise we must set it before each send() and put the old
one back just after... "oh la la" :)
For freebsd and MacOs (>10.2), there seems to be an equivalent:
SO_NOSIGPIPE
This flag must be set at socket creation time by setsockopt but should
be what we are looking for.
An solution proposed by Marc, which is quite elegant (I mean, the
solution ;) ) could be to define 2 global variables in a
system-definitions.hpp: one for socket options, one for send() flags
Everybody ? comments ?
Ian Holsman a écrit :
Hi.
I am trying to get carob running on my mac, and have had the following
issues:
- gnu's c++ locale only works when you use glibc, (which OS/X doesn't,
but default it uses UTF8)
- MSG_NOSIGNAL doesn't exist on OS/X. so I am replacing the signal
handler instead.
here is the diff so far...
it doesn't pass all the tests, but the 'read_example' runs.
the output of carobTestLauncher is
1) test: encode_decode (E)
uncaught exception of unknown type
(and I disabled the locale test, as it won't work without glibc's locale)
libmysequoia isn't fairing as well I'm afraid .. 13/18 tests are
failing ;(
Helios:/src/java/continuent/carob/src ianh$ cvs diff
Index: Common.cpp
===================================================================
RCS file: /cvsroot/carob/carob/src/Common.cpp,v
retrieving revision 1.18
diff -u -r1.18 Common.cpp
--- Common.cpp 19 Dec 2005 18:32:03 -0000 1.18
+++ Common.cpp 4 Jan 2006 01:58:58 -0000
@@ -36,7 +36,8 @@
// TODO: it would be nice to be able to get this at runtime
// (in a non-portable way quite obviously...)
// On linux try "locale -a"
-#define NAME_OF_ANY_UTF8_LOCALE_AVAILABLE "en_US.utf8"
+//#define NAME_OF_ANY_UTF8_LOCALE_AVAILABLE "en_US.utf8"
+#define NAME_OF_ANY_UTF8_LOCALE_AVAILABLE "C"
void CarobNS::setLogLevel(const LogLevel l)
{
Index: Connection.cpp
===================================================================
RCS file: /cvsroot/carob/carob/src/Connection.cpp,v
retrieving revision 1.48
diff -u -r1.48 Connection.cpp
--- Connection.cpp 30 Dec 2005 17:23:40 -0000 1.48
+++ Connection.cpp 4 Jan 2006 01:58:59 -0000
@@ -26,7 +26,18 @@
using std::wstring;
using namespace CarobNS;
-
+static void UNIXIgnoreSIGPIPE(void)
+{
+ int err;
+ struct sigaction signalState;
+ err = sigaction(SIGPIPE, NULL, &signalState);
+// err = MoreUNIXErrno(err);
+ if (err == 0) {
+ signalState.sa_handler = SIG_IGN;
+ err = sigaction(SIGPIPE, &signalState, NULL);
+// err = MoreUNIXErrno(err);
+ }
+}
Connection::Connection(const ConnectionParameters& prms)
throw (ConnectionException, AuthenticationException,
UnexpectedException) :
isClosed(true),
@@ -35,6 +46,7 @@
writeExecutedInTransaction(false),
mustBeginTransaction(false)
{
+ UNIXIgnoreSIGPIPE();
wstring fctName(L"Connection::Connection");
if (isInfoEnabled())
{
Index: JavaSocket.cpp
===================================================================
RCS file: /cvsroot/carob/carob/src/JavaSocket.cpp,v
retrieving revision 1.26
diff -u -r1.26 JavaSocket.cpp
--- JavaSocket.cpp 22 Dec 2005 14:58:56 -0000 1.26
+++ JavaSocket.cpp 4 Jan 2006 01:58:59 -0000
@@ -30,6 +30,11 @@
using namespace CarobNS;
+#ifndef MSG_NOSIGNAL
+#define MSG_NOSIGNAL 0
+//MSG_NOSIGNAL needs a sigpipe handler set to null setup!
+#endif
+
JavaSocket::JavaSocket() :
socketFd(-1),
connected(false)
_______________________________________________
Carob mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob
_______________________________________________
Carob mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob