Date: Sat, 29 Aug 2009 09:16:11 +0200 From: Robert Nagy <robert@openbsd.org> To: pgollucci@freebsd.org Cc: freebsd-ports@freebsd.org Subject: Re: luasocket namespace clash with lighttpd mod_magnet Message-ID: <20090829071611.GA25487@bsd.hu> In-Reply-To: <20090822202653.GA3713@bsd.hu> References: <20090822202653.GA3713@bsd.hu>
next in thread | previous in thread | raw e-mail | index | archive | help
Noone cares? On (2009-08-22 22:26), Robert Nagy wrote: > > Hey, > > Basically - luasocket defines buffer_init(); which is common enough to be defined > elsewhere and it is defined in mod_magnet, so you end up with a SIGSEGV. > The attatched patch solves the issue by renaming the buffer_* funcs to ls_buffer_*. > Its a totally safe diff that does not affect anything else and fixes a problem. > > I've commited this to OpenBSD already, but I need it on FreeBSD too. > > http://www.freebsd.org/cgi/query-pr.cgi?pr=138055 contains a wrong diff, > sorry for that. > > Index: Makefile > =================================================================== > RCS file: /home/ncvs/ports/net/luasocket/Makefile,v > retrieving revision 1.12 > diff -u -r1.12 Makefile > --- Makefile 9 Jul 2009 03:57:57 -0000 1.12 > +++ Makefile 22 Aug 2009 20:25:53 -0000 > @@ -7,6 +7,7 @@ > > PORTNAME= luasocket > PORTVERSION= 2.0.2 > +PORTREVISION= 1 > CATEGORIES= net > MASTER_SITES= http://luaforge.net/frs/download.php/2664/ > PKGNAMEPREFIX= ${LUA_PKGNAMEPREFIX} > Index: files/patch-config > =================================================================== > RCS file: /home/ncvs/ports/net/luasocket/files/patch-config,v > retrieving revision 1.3 > diff -u -r1.3 patch-config > --- files/patch-config 28 Oct 2007 19:43:49 -0000 1.3 > +++ files/patch-config 22 Aug 2009 20:25:53 -0000 > @@ -1,6 +1,6 @@ > ---- config.orig Sun Oct 14 12:44:03 2007 > -+++ config Sun Oct 14 13:54:39 2007 > -@@ -18,11 +18,13 @@ > +--- config.orig 2007-10-15 06:21:05.000000000 +0200 > ++++ config 2009-08-22 22:23:45.000000000 +0200 > +@@ -18,11 +18,13 @@ UNIX_SO=unix.$(EXT) > #LUAINC=-I/usr/local/include/lua50 > #LUAINC=-I/usr/local/include/lua5.1 > #LUAINC=-Ilua-5.1.1/src > @@ -14,7 +14,7 @@ > > #------ > # Top of your Lua installation > -@@ -30,11 +32,11 @@ > +@@ -30,11 +32,11 @@ UNIX_SO=unix.$(EXT) > # > #INSTALL_TOP_SHARE=/usr/local/share/lua/5.0 > #INSTALL_TOP_LIB=/usr/local/lib/lua/5.0 > @@ -30,7 +30,7 @@ > > #------ > # Compiler and linker settings > -@@ -49,11 +51,11 @@ > +@@ -49,11 +51,11 @@ INSTALL_EXEC=cp > #------ > # Compiler and linker settings > # for Linux > Index: files/patch-src_buffer_c > =================================================================== > RCS file: files/patch-src_buffer_c > diff -N files/patch-src_buffer_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ files/patch-src_buffer_c 22 Aug 2009 20:25:53 -0000 > @@ -0,0 +1,100 @@ > +$OpenBSD: patch-src_buffer_c,v 1.1 2005/11/25 15:09:44 pedro Exp $ > +--- src/buffer.c.orig 2007-10-15 06:21:05.000000000 +0200 > ++++ src/buffer.c 2009-08-22 22:25:16.000000000 +0200 > +@@ -33,7 +33,7 @@ static int sendraw(p_buffer buf, const c > + /*-------------------------------------------------------------------------*\ > + * Initializes module > + \*-------------------------------------------------------------------------*/ > +-int buffer_open(lua_State *L) { > ++int ls_buffer_open(lua_State *L) { > + (void) L; > + return 0; > + } > +@@ -41,7 +41,7 @@ int buffer_open(lua_State *L) { > + /*-------------------------------------------------------------------------*\ > + * Initializes C structure > + \*-------------------------------------------------------------------------*/ > +-void buffer_init(p_buffer buf, p_io io, p_timeout tm) { > ++void ls_buffer_init(p_buffer buf, p_io io, p_timeout tm) { > + buf->first = buf->last = 0; > + buf->io = io; > + buf->tm = tm; > +@@ -52,7 +52,7 @@ void buffer_init(p_buffer buf, p_io io, > + /*-------------------------------------------------------------------------*\ > + * object:getstats() interface > + \*-------------------------------------------------------------------------*/ > +-int buffer_meth_getstats(lua_State *L, p_buffer buf) { > ++int ls_buffer_meth_getstats(lua_State *L, p_buffer buf) { > + lua_pushnumber(L, buf->received); > + lua_pushnumber(L, buf->sent); > + lua_pushnumber(L, timeout_gettime() - buf->birthday); > +@@ -62,7 +62,7 @@ int buffer_meth_getstats(lua_State *L, p > + /*-------------------------------------------------------------------------*\ > + * object:setstats() interface > + \*-------------------------------------------------------------------------*/ > +-int buffer_meth_setstats(lua_State *L, p_buffer buf) { > ++int ls_buffer_meth_setstats(lua_State *L, p_buffer buf) { > + buf->received = (long) luaL_optnumber(L, 2, buf->received); > + buf->sent = (long) luaL_optnumber(L, 3, buf->sent); > + if (lua_isnumber(L, 4)) buf->birthday = timeout_gettime() - lua_tonumber(L, 4); > +@@ -73,14 +73,16 @@ int buffer_meth_setstats(lua_State *L, p > + /*-------------------------------------------------------------------------*\ > + * object:send() interface > + \*-------------------------------------------------------------------------*/ > +-int buffer_meth_send(lua_State *L, p_buffer buf) { > ++int ls_buffer_meth_send(lua_State *L, p_buffer buf) { > + int top = lua_gettop(L); > + int err = IO_DONE; > + size_t size = 0, sent = 0; > + const char *data = luaL_checklstring(L, 2, &size); > + long start = (long) luaL_optnumber(L, 3, 1); > + long end = (long) luaL_optnumber(L, 4, -1); > ++#ifdef LUASOCKET_DEBUG > + p_timeout tm = timeout_markstart(buf->tm); > ++#endif > + if (start < 0) start = (long) (size+start+1); > + if (end < 0) end = (long) (size+end+1); > + if (start < 1) start = (long) 1; > +@@ -106,12 +108,14 @@ int buffer_meth_send(lua_State *L, p_buf > + /*-------------------------------------------------------------------------*\ > + * object:receive() interface > + \*-------------------------------------------------------------------------*/ > +-int buffer_meth_receive(lua_State *L, p_buffer buf) { > ++int ls_buffer_meth_receive(lua_State *L, p_buffer buf) { > + int err = IO_DONE, top = lua_gettop(L); > + luaL_Buffer b; > + size_t size; > + const char *part = luaL_optlstring(L, 3, "", &size); > ++#ifdef LUASOCKET_DEBUG > + p_timeout tm = timeout_markstart(buf->tm); > ++#endif > + /* initialize buffer with optional extra prefix > + * (useful for concatenating previous partial results) */ > + luaL_buffinit(L, &b); > +@@ -149,7 +153,7 @@ int buffer_meth_receive(lua_State *L, p_ > + /*-------------------------------------------------------------------------*\ > + * Determines if there is any data in the read buffer > + \*-------------------------------------------------------------------------*/ > +-int buffer_isempty(p_buffer buf) { > ++int ls_buffer_isempty(p_buffer buf) { > + return buf->first >= buf->last; > + } > + > +@@ -244,7 +248,7 @@ static int recvline(p_buffer buf, luaL_B > + static void buffer_skip(p_buffer buf, size_t count) { > + buf->received += count; > + buf->first += count; > +- if (buffer_isempty(buf)) > ++ if (ls_buffer_isempty(buf)) > + buf->first = buf->last = 0; > + } > + > +@@ -256,7 +260,7 @@ static int buffer_get(p_buffer buf, cons > + int err = IO_DONE; > + p_io io = buf->io; > + p_timeout tm = buf->tm; > +- if (buffer_isempty(buf)) { > ++ if (ls_buffer_isempty(buf)) { > + size_t got; > + err = io->recv(io->ctx, buf->data, BUF_SIZE, &got, tm); > + buf->first = 0; > Index: files/patch-src_buffer_h > =================================================================== > RCS file: files/patch-src_buffer_h > diff -N files/patch-src_buffer_h > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ files/patch-src_buffer_h 22 Aug 2009 20:25:53 -0000 > @@ -0,0 +1,23 @@ > +$OpenBSD$ > +--- src/buffer.h.orig Thu Apr 27 05:23:22 2006 > ++++ src/buffer.h Sat Aug 22 22:19:02 2009 > +@@ -36,12 +36,12 @@ typedef struct t_buffer_ { > + } t_buffer; > + typedef t_buffer *p_buffer; > + > +-int buffer_open(lua_State *L); > +-void buffer_init(p_buffer buf, p_io io, p_timeout tm); > +-int buffer_meth_send(lua_State *L, p_buffer buf); > +-int buffer_meth_receive(lua_State *L, p_buffer buf); > +-int buffer_meth_getstats(lua_State *L, p_buffer buf); > +-int buffer_meth_setstats(lua_State *L, p_buffer buf); > +-int buffer_isempty(p_buffer buf); > ++int ls_buffer_open(lua_State *L); > ++void ls_buffer_init(p_buffer buf, p_io io, p_timeout tm); > ++int ls_buffer_meth_send(lua_State *L, p_buffer buf); > ++int ls_buffer_meth_receive(lua_State *L, p_buffer buf); > ++int ls_buffer_meth_getstats(lua_State *L, p_buffer buf); > ++int ls_buffer_meth_setstats(lua_State *L, p_buffer buf); > ++int ls_buffer_isempty(p_buffer buf); > + > + #endif /* BUF_H */ > Index: files/patch-src_luasocket_c > =================================================================== > RCS file: files/patch-src_luasocket_c > diff -N files/patch-src_luasocket_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ files/patch-src_luasocket_c 22 Aug 2009 20:25:53 -0000 > @@ -0,0 +1,11 @@ > +--- src/luasocket.c.orig 2007-10-15 06:21:05.000000000 +0200 > ++++ src/luasocket.c 2009-08-22 22:23:45.000000000 +0200 > +@@ -51,7 +51,7 @@ static const luaL_reg mod[] = { > + {"auxiliar", auxiliar_open}, > + {"except", except_open}, > + {"timeout", timeout_open}, > +- {"buffer", buffer_open}, > ++ {"buffer", ls_buffer_open}, > + {"inet", inet_open}, > + {"tcp", tcp_open}, > + {"udp", udp_open}, > Index: files/patch-src_tcp_c > =================================================================== > RCS file: files/patch-src_tcp_c > diff -N files/patch-src_tcp_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ files/patch-src_tcp_c 22 Aug 2009 20:25:53 -0000 > @@ -0,0 +1,57 @@ > +$OpenBSD$ > +--- src/tcp.c.orig Thu Apr 27 05:23:21 2006 > ++++ src/tcp.c Sat Aug 22 22:19:02 2009 > +@@ -104,22 +104,22 @@ int tcp_open(lua_State *L) > + \*-------------------------------------------------------------------------*/ > + static int meth_send(lua_State *L) { > + p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); > +- return buffer_meth_send(L, &tcp->buf); > ++ return ls_buffer_meth_send(L, &tcp->buf); > + } > + > + static int meth_receive(lua_State *L) { > + p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); > +- return buffer_meth_receive(L, &tcp->buf); > ++ return ls_buffer_meth_receive(L, &tcp->buf); > + } > + > + static int meth_getstats(lua_State *L) { > + p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); > +- return buffer_meth_getstats(L, &tcp->buf); > ++ return ls_buffer_meth_getstats(L, &tcp->buf); > + } > + > + static int meth_setstats(lua_State *L) { > + p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); > +- return buffer_meth_setstats(L, &tcp->buf); > ++ return ls_buffer_meth_setstats(L, &tcp->buf); > + } > + > + /*-------------------------------------------------------------------------*\ > +@@ -152,7 +152,7 @@ static int meth_setfd(lua_State *L) > + static int meth_dirty(lua_State *L) > + { > + p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); > +- lua_pushboolean(L, !buffer_isempty(&tcp->buf)); > ++ lua_pushboolean(L, !ls_buffer_isempty(&tcp->buf)); > + return 1; > + } > + > +@@ -176,7 +176,7 @@ static int meth_accept(lua_State *L) > + io_init(&clnt->io, (p_send) socket_send, (p_recv) socket_recv, > + (p_error) socket_ioerror, &clnt->sock); > + timeout_init(&clnt->tm, -1, -1); > +- buffer_init(&clnt->buf, &clnt->io, &clnt->tm); > ++ ls_buffer_init(&clnt->buf, &clnt->io, &clnt->tm); > + return 1; > + } else { > + lua_pushnil(L); > +@@ -329,7 +329,7 @@ static int global_create(lua_State *L) > + io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv, > + (p_error) socket_ioerror, &tcp->sock); > + timeout_init(&tcp->tm, -1, -1); > +- buffer_init(&tcp->buf, &tcp->io, &tcp->tm); > ++ ls_buffer_init(&tcp->buf, &tcp->io, &tcp->tm); > + return 1; > + } else { > + lua_pushnil(L); > Index: files/patch-src_unix_c > =================================================================== > RCS file: files/patch-src_unix_c > diff -N files/patch-src_unix_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ files/patch-src_unix_c 22 Aug 2009 20:25:53 -0000 > @@ -0,0 +1,57 @@ > +$OpenBSD$ > +--- src/unix.c.orig Thu Apr 27 05:23:21 2006 > ++++ src/unix.c Sat Aug 22 22:19:02 2009 > +@@ -105,22 +105,22 @@ int luaopen_socket_unix(lua_State *L) { > + \*-------------------------------------------------------------------------*/ > + static int meth_send(lua_State *L) { > + p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); > +- return buffer_meth_send(L, &un->buf); > ++ return ls_buffer_meth_send(L, &un->buf); > + } > + > + static int meth_receive(lua_State *L) { > + p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); > +- return buffer_meth_receive(L, &un->buf); > ++ return ls_buffer_meth_receive(L, &un->buf); > + } > + > + static int meth_getstats(lua_State *L) { > + p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); > +- return buffer_meth_getstats(L, &un->buf); > ++ return ls_buffer_meth_getstats(L, &un->buf); > + } > + > + static int meth_setstats(lua_State *L) { > + p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); > +- return buffer_meth_setstats(L, &un->buf); > ++ return ls_buffer_meth_setstats(L, &un->buf); > + } > + > + /*-------------------------------------------------------------------------*\ > +@@ -149,7 +149,7 @@ static int meth_setfd(lua_State *L) { > + > + static int meth_dirty(lua_State *L) { > + p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); > +- lua_pushboolean(L, !buffer_isempty(&un->buf)); > ++ lua_pushboolean(L, !ls_buffer_isempty(&un->buf)); > + return 1; > + } > + > +@@ -172,7 +172,7 @@ static int meth_accept(lua_State *L) { > + io_init(&clnt->io, (p_send)socket_send, (p_recv)socket_recv, > + (p_error) socket_ioerror, &clnt->sock); > + timeout_init(&clnt->tm, -1, -1); > +- buffer_init(&clnt->buf, &clnt->io, &clnt->tm); > ++ ls_buffer_init(&clnt->buf, &clnt->io, &clnt->tm); > + return 1; > + } else { > + lua_pushnil(L); > +@@ -346,7 +346,7 @@ static int global_create(lua_State *L) { > + io_init(&un->io, (p_send) socket_send, (p_recv) socket_recv, > + (p_error) socket_ioerror, &un->sock); > + timeout_init(&un->tm, -1, -1); > +- buffer_init(&un->buf, &un->io, &un->tm); > ++ ls_buffer_init(&un->buf, &un->io, &un->tm); > + return 1; > + } else { > + lua_pushnil(L); > _______________________________________________ > freebsd-ports@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-ports > To unsubscribe, send any mail to "freebsd-ports-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090829071611.GA25487>