Hello all,
Does anyone knows about this "permission.so" module error when try to load "trusted" table (mysql)?
If "trusted" table is empty, there is no error, but whan at least there is 1 record, the error appears.
for example:
mysql> select * from trusted; +---------------+-------+--------------+ | src_ip | proto | from_pattern | +---------------+-------+--------------+ | 10.124.35.253 | any | ^sip:.*$ | +---------------+-------+--------------+
and when I try lo restart ser:
Jan 15 15:34:45 delcolimba /usr/local/sbin/ser[703]: [ID 966737 daemon.info] permissions - initializing Jan 15 15:34:45 delcolimba /usr/local/sbin/ser[703]: [ID 414293 daemon.warning] Default allow file (/usr/local/etc/ser/permissions.allow) not found => empty rule set Jan 15 15:34:45 delcolimba /usr/local/sbin/ser[703]: [ID 844440 daemon.warning] Default deny file (/usr/local/etc/ser/permissions.deny) not found => empty rule set
Jan 15 15:34:45 delcolimba /usr/local/sbin/ser[703]: [ID 895822 daemon.error] ERROR: permissions: trusted_reload(): Database problem Jan 15 15:34:45 delcolimba /usr/local/sbin/ser[703]: [ID 650101 daemon.crit] init_trusted(): Reload of trusted table failed Jan 15 15:34:45 delcolimba /usr/local/sbin/ser[703]: [ID 345573 daemon.error] Error while initializing allow_trusted function Jan 15 15:34:45 delcolimba /usr/local/sbin/ser[703]: [ID 660978 daemon.error] init_mod(): Error while initializing module permissions
or when executing serctl fifo cmd:
root@delcolimba /usr/local # sbin/serctl fifo trusted_dump 200 OK
root@delcolimba /usr/local # sbin/serctl fifo trusted_reload 400 Trusted table reload failed
root@delcolimba /usr/local # tail /var/adm/messages
Jan 15 15:45:37 delcolimba /usr/local/sbin/ser[717]: [ID 895822 daemon.error] ERROR: permissions: trusted_reload(): Database problem Jan 15 15:45:37 delcolimba /usr/local/sbin/ser[717]: [ID 450600 daemon.error] ERROR: fifo_server: command (trusted_reload) processing failed
Thank you,
Caio
Miklos Tirpak escribió:
No, they don't. They are stand-alone with its respective (local) mysql db.
mysql> desc trusted; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | src_ip | varchar(39) | NO | PRI | NULL | | | proto | varchar(4) | NO | PRI | NULL | | | from_pattern | varchar(64) | NO | PRI | NULL | | +--------------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
Casually, i add a few DBG() calls on 'trusted.c' and now at log see these messages:
0(0) DEBUG: register_fifo_cmd: new command (trusted_reload) registered 0(0) DEBUG: register_fifo_cmd: new command (trusted_dump) registered 0(0) unixsock_register_cmd: New command (trusted_reload) registered 0(0) unixsock_register_cmd: New command (trusted_dump) registered 0(0) RES_ROWS (row): 135511480 0(0) Number of rows in trusted table: 1 0(0) row: 135511480 0(0) val: 135511648 0(0) val + 1: 135511664 0(0) val + 2: 135511680 0(0) ROW_VALUES (val): 135511648 0(0) ROW_N(row + i): 3 0(0) VAL_TYPE(val), is DB_STRING?: 2 0(0) VAL_TYPE(val + 1), is DB_STRING?: 2 0(0) VAL_TYPE(val + 2), is DB_STRING?: 1 0(0) DB_INT: 0 0(0) DB_DOUBLE: 1 0(0) DB_STRING: 2 0(0) DB_STR: 3 0(0) VAL_NULL(val): 0 0(0) VAL_NULL(val + 1): 0 0(0) VAL_NULL(val + 2): 0 0(0) VAL_STRING(val): 200.2.127.153 0(0) VAL_STRING(val + 1): any 0(0) VAL_DOUBLE(val + 2): 0 0(0) ERROR: permissions: trusted_reload(): Database problem 0(0) release_connection(): Removing connection from the pool 0(0) init_trusted(): Reload of trusted table failed 0(0) Error while initializing allow_trusted function 0(0) init_mod(): Error while initializing module permissions
Seem that VAL_TYPE of "val + 2" isn't STRING, read it as DOUBLE (DB_DOUBLE = 1). Do not know why. And because of this the 'if' conditions never are satisfy on trusted.c (line #396):
if ((ROW_N(row + i) == 3) && (VAL_TYPE(val) == DB_STRING) && !VAL_NULL(val) && (VAL_TYPE(val + 1) == DB_STRING) && !VAL_NULL(val + 1) && (VAL_TYPE(val + 2) == DB_STRING) && !VAL_NULL(val + 2)) {
Caio
On 01/16/2009 06:05 PM, caio wrote:
Could you give a try to another DB server? For example query the linux mysql server from the Solaris machine, if it is accessible.
Thank you very much for the debug lines! I think SER simply uses the field types returned by the mysql server, so there might be a problem with the server or library. You can check what the field types are along with their names returned by the server in modules/mysql/res.c, search for the mysql_fetch_fields function.
Miklos
Miklos Tirpak escribió:
Miklos,
I've resolved this issue and a similar one ("preload_udomain error"). There was an old installation of mysql libs (in /usr/sfw/), then I removed it, and finally recompile mysql.so module including correct mysql.h (/opt/csw/).
Now fields returned are with their correct type.
Thank you..
Caio