[asterisk-bugs] [JIRA] (ASTERISK-30260) ari: Creation of outbound PJSIP registration fails

Thomas Guebels (JIRA) noreply at issues.asterisk.org
Mon Oct 10 05:45:08 CDT 2022


     [ https://issues.asterisk.org/jira/browse/ASTERISK-30260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Guebels updated ASTERISK-30260:
--------------------------------------

    Description: 
When creating an outbound registration using ARI push and using the realtime backend, some fields defined as OPT_BOOL_T in Sorcery make the database query fail.

It seems there is a mismatch between the realtime database schema being ENUM(yes,no) and the Sorcery object definition.

realtime ps_registrations:
auth_rejection_permanent    | enum('yes','no') 
support_path                | enum('yes','no') 
line                        | enum('yes','no')

res_pjsip_outbound_registration:
ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "auth_rejection_permanent", "yes", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, auth_rejection_permanent));
ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "support_path", "no", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, support_path));
ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "line", "no", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, line));

When making the following request: PUT  '{ "fields": [ {"attribute" : "auth_rejection_permanent", "value" : "no" } }'

We can see in the log that the value is converted to a boolean by sorcery:

DEBUG[2320092] res_config_odbc.c: Parameter 3 ('auth_rejection_permanent') = 'false'

Which then fails to be inserted in the table field:

WARNING[2320092] res_odbc.c: SQL Execute returned an error: Data truncated for column 'auth_rejection_permanent' at row 1
WARNING[2320092] res_odbc.c: SQL Execute error -1!


  was:
When creating an outbound registration using ARI push and using the realtime backend, some fields defined as OPT_BOOL_T in Sorcery make the database query fail.

It seems there is a mismatch between the realtime database schema being ENUM(yes,no) and the Sorcery object definition.

realtime ps_registrations:
auth_rejection_permanent    | enum('yes','no') 
support_path                | enum('yes','no') 
line                        | enum('yes','no')

res_pjsip_outbound_registration:
ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "auth_rejection_permanent", "yes", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, auth_rejection_permanent));
ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "support_path", "no", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, support_path));
ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "line", "no", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, line));




> ari: Creation of outbound PJSIP registration fails
> --------------------------------------------------
>
>                 Key: ASTERISK-30260
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-30260
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_pjsip_outbound_registration
>    Affects Versions: 18.14.0
>            Reporter: Thomas Guebels
>
> When creating an outbound registration using ARI push and using the realtime backend, some fields defined as OPT_BOOL_T in Sorcery make the database query fail.
> It seems there is a mismatch between the realtime database schema being ENUM(yes,no) and the Sorcery object definition.
> realtime ps_registrations:
> auth_rejection_permanent    | enum('yes','no') 
> support_path                | enum('yes','no') 
> line                        | enum('yes','no')
> res_pjsip_outbound_registration:
> ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "auth_rejection_permanent", "yes", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, auth_rejection_permanent));
> ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "support_path", "no", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, support_path));
> ast_sorcery_object_field_register(ast_sip_get_sorcery(), "registration", "line", "no", OPT_BOOL_T, 1, FLDSET(struct sip_outbound_registration, line));
> When making the following request: PUT  '{ "fields": [ {"attribute" : "auth_rejection_permanent", "value" : "no" } }'
> We can see in the log that the value is converted to a boolean by sorcery:
> DEBUG[2320092] res_config_odbc.c: Parameter 3 ('auth_rejection_permanent') = 'false'
> Which then fails to be inserted in the table field:
> WARNING[2320092] res_odbc.c: SQL Execute returned an error: Data truncated for column 'auth_rejection_permanent' at row 1
> WARNING[2320092] res_odbc.c: SQL Execute error -1!



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list