Does anyone have Openser 1.2, with PostgreSQL 8.2.4 and the Permissions module working with at least one entry in the address table?
If anyone has Openser 1.2 and PostgreSQL 8.2.4 running in combination, could you see if you can duplicate this problem? Any time any entry is in the address table, OpenSER will not start, reporting this error:
openser=# select * from address;
id | grp | ip_addr | mask | port
----+-----+---------+------+------
(0 rows)
Starts fine!
openser=# insert into address (grp, ip_addr, mask, port) values (0, '192.168.1.100',32, 5060);
INSERT 0 1
openser=# select * from address;
id | grp | ip_addr | mask | port
----+-----+---------------+------+------
5 | 0 | 192.168.1.100 | 32 | 5060
(1 row)
openser=#
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: ERROR: permissions: address_reload(): Database problem
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: permissions:init_addresses(): Reload of address table failed
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: Error while initializing allow_address function
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: init_mod(): Error while initializing module permissions
Thanks in advance,
kw
in address.c:
119 val = ROW_VALUES(row + i); 120 if ((ROW_N(row + i) == 4) && 121 (VAL_TYPE(val) == DB_INT) && !VAL_NULL(val) && 122 (VAL_TYPE(val + 1) == DB_STRING) && !VAL_NULL(val + 1) && 123 inet_aton((char *)VAL_STRING(val + 1), &ip_addr) != 0 && 124 (VAL_TYPE(val + 2) == DB_INT) && !VAL_NULL(val + 2) && 125 ((unsigned int)VAL_INT(val + 2) > 0) && 126 ((unsigned int)VAL_INT(val + 2) <= 32) && 127 (VAL_TYPE(val + 3) == DB_INT) && !VAL_NULL(val + 3)) { 128 if ((unsigned int)VAL_INT(val + 2) == 32) { 129 if (addr_hash_table_insert(new_hash_table, 130 (unsigned int)VAL_INT(val), 131 (unsigned int)ip_addr.s_addr, 132 (unsigned int)VAL_INT(val + 3)) 133 == -1) {
I guess this check fails: (VAL_TYPE(val + 3) == DB_INT)
as the mask is returned as DOUBLE from postgres: Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[0] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting INT [0] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[1] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting STRING [192.168.1.100] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[2] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting DOUBLE [32] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[3] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting INT [5060]
try to change the table definition.
regards klaus
Kelvin Williams wrote:
Does anyone have Openser 1.2, with PostgreSQL 8.2.4 and the Permissions module working with at least one entry in the address table?
If anyone has Openser 1.2 and PostgreSQL 8.2.4 running in combination, could you see if you can duplicate this problem? Any time any entry is in the address table, OpenSER will not start, reporting this error:
openser=# select * from address;
id | grp | ip_addr | mask | port
----+-----+---------+------+------
(0 rows)
Starts fine!
openser=# insert into address (grp, ip_addr, mask, port) values (0, '192.168.1.100',32, 5060);
INSERT 0 1
openser=# select * from address;
id | grp | ip_addr | mask | port
----+-----+---------------+------+------
5 | 0 | 192.168.1.100 | 32 | 5060
(1 row)
openser=#
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: ERROR: permissions: address_reload(): Database problem
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: permissions:init_addresses(): Reload of address table failed
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: Error while initializing allow_address function
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: init_mod(): Error while initializing module permissions
Thanks in advance,
kw
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Many thanks Klaus.
Changing the data type to integer worked perfectly.
In postgresqldb.sh, someone may want to modify the create table statement:
CREATE TABLE address ( id $AUTO_INCREMENT, grp smallint NOT NULL default '0', ip_addr varchar(15) NOT NULL default '', mask $TINYINT NOT NULL default 32, port smallint NOT NULL default '0' ) $TABLE_TYPE;
As the $TINYINT variable is defined in postgresqldb.sh as: TINYINT="NUMERIC(4,0)"
Thanks, kw
-----Original Message----- From: Klaus Darilion [mailto:klaus.mailinglists@pernau.at] Sent: Monday, June 25, 2007 3:13 AM To: Kelvin Williams Cc: users@openser.org Subject: Re: [OpenSER-Users] Permissions Module
in address.c:
119 val = ROW_VALUES(row + i); 120 if ((ROW_N(row + i) == 4) && 121 (VAL_TYPE(val) == DB_INT) && !VAL_NULL(val) && 122 (VAL_TYPE(val + 1) == DB_STRING) && !VAL_NULL(val + 1) && 123 inet_aton((char *)VAL_STRING(val + 1), &ip_addr) != 0 && 124 (VAL_TYPE(val + 2) == DB_INT) && !VAL_NULL(val + 2) && 125 ((unsigned int)VAL_INT(val + 2) > 0) && 126 ((unsigned int)VAL_INT(val + 2) <= 32) && 127 (VAL_TYPE(val + 3) == DB_INT) && !VAL_NULL(val + 3)) { 128 if ((unsigned int)VAL_INT(val + 2) == 32) { 129 if (addr_hash_table_insert(new_hash_table, 130 (unsigned int)VAL_INT(val), 131 (unsigned int)ip_addr.s_addr, 132 (unsigned int)VAL_INT(val + 3)) 133 == -1) {
I guess this check fails: (VAL_TYPE(val + 3) == DB_INT)
as the mask is returned as DOUBLE from postgres: Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[0] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting INT [0] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[1] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting STRING [192.168.1.100] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[2] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting DOUBLE [32] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[convert_row]: col[3] Jun 25 08:56:41 ds3000 /usr/sbin/openser[19796]: PG[str2val]: Converting INT [5060]
try to change the table definition.
regards klaus
Kelvin Williams wrote:
Does anyone have Openser 1.2, with PostgreSQL 8.2.4 and the Permissions module working with at least one entry in the address table?
If anyone has Openser 1.2 and PostgreSQL 8.2.4 running in combination,
could
you see if you can duplicate this problem? Any time any entry is in the address table, OpenSER will not start, reporting this error:
openser=# select * from address;
id | grp | ip_addr | mask | port
----+-----+---------+------+------
(0 rows)
Starts fine!
openser=# insert into address (grp, ip_addr, mask, port) values (0, '192.168.1.100',32, 5060);
INSERT 0 1
openser=# select * from address;
id | grp | ip_addr | mask | port
----+-----+---------------+------+------
5 | 0 | 192.168.1.100 | 32 | 5060
(1 row)
openser=#
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: ERROR: permissions: address_reload(): Database problem
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: permissions:init_addresses(): Reload of address table failed
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: Error while initializing allow_address function
Jun 23 16:55:47 gaia /usr/local/sbin/openser[24163]: init_mod(): Error
while
initializing module permissions
Thanks in advance,
kw
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
On Montag, 25. Juni 2007, Kelvin Williams wrote:
Many thanks Klaus.
Changing the data type to integer worked perfectly.
In postgresqldb.sh, someone may want to modify the create table statement:
CREATE TABLE address ( id $AUTO_INCREMENT, grp smallint NOT NULL default '0', ip_addr varchar(15) NOT NULL default '', mask $TINYINT NOT NULL default 32, port smallint NOT NULL default '0' ) $TABLE_TYPE;
Hello Kelvin,
i've changed the mask datatype to SMALLINT in the 1.2 branch, in trunk its already fixed.
Cheers,
Henning