No MSG_NOSIGNAL on Solaris...

Brad Fitzpatrick brad@danga.com
Tue, 14 Oct 2003 06:36:33 -0700 (PDT)


Jason,

This is unfortunate, but we can work-around.  I'm on the road all today,
but in the meantime, if you need it to work:

-- remove MSG_NOSIGNAL everywhere you see it (replace with 0)

-- add:

      $SIG{PIPE} = 'IGNORE';

   to, say, the new() sub.

This is kinda wrong, which is why we didn't do it like that before.

We should really localize it so we don't interfere with other people who
might depend on SIGPIPE, but that requires a lot of extra syscalls, which
we avoided for performance.

Perhaps what we'll do is let you define a constructor parameter that says
who handles SIGPIPE:  you or the module, the default being the module for
people who don't want to understand signals.  If you want the extra
performance, you say you're handling it and define the PIPE = IGNORE line
as above elsewhere in your app.

I'm open to suggestions, though.  The Unix portability game is new to me.

- Brad


On Mon, 13 Oct 2003, Jason Titus wrote:

> I was excited to read about memcache, but am having a bit of trouble getting it to work on Solaris (as a perl client).  When I try to start up my client I get the following error:
>
> Your vendor has not defined Socket macro MSG_NOSIGNAL, used at /home/jtitus/e3_0/lib/perl5/site_perl/5.8.1/MemCachedClient.pm line 249
>
> Any easy way to work around the lack of a MSG_NOSIGNAL signal on Solaris?
>
> Thanks for any help,
> Jason
>
>