Skip to content

Commit

Permalink
core: xvavp - new data type SR_XTYPE_SPTR
Browse files Browse the repository at this point in the history
- store a shm pointer that has to be freed at destroy with shm_free()
  • Loading branch information
miconda committed May 23, 2019
1 parent fb75e90 commit 126cfa5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
16 changes: 14 additions & 2 deletions src/core/xavp.c
Expand Up @@ -57,6 +57,10 @@ void xavp_free(sr_xavp_t *xa)
xa->val.v.data->pfree(xa->val.v.data->p, xavp_shm_free);
shm_free(xa->val.v.data);
}
} else if(xa->val.type == SR_XTYPE_SPTR) {
if(xa->val.v.vptr) {
shm_free(xa->val.v.vptr);
}
} else if(xa->val.type == SR_XTYPE_XAVP) {
xavp_destroy_list(&xa->val.v.xavp);
}
Expand All @@ -70,6 +74,10 @@ void xavp_free_unsafe(sr_xavp_t *xa)
xa->val.v.data->pfree(xa->val.v.data->p, xavp_shm_free_unsafe);
shm_free_unsafe(xa->val.v.data);
}
} else if(xa->val.type == SR_XTYPE_SPTR) {
if(xa->val.v.vptr) {
shm_free_unsafe(xa->val.v.vptr);
}
} else if(xa->val.type == SR_XTYPE_XAVP) {
xavp_destroy_list_unsafe(&xa->val.v.xavp);
}
Expand Down Expand Up @@ -588,6 +596,9 @@ void xavp_print_list_content(sr_xavp_t **head, int level)
case SR_XTYPE_VPTR:
LM_INFO(" XAVP value: <vptr:%p>\n", avp->val.v.vptr);
break;
case SR_XTYPE_SPTR:
LM_INFO(" XAVP value: <sptr:%p>\n", avp->val.v.vptr);
break;
case SR_XTYPE_DATA:
LM_INFO(" XAVP value: <data:%p>\n", avp->val.v.data);
break;
Expand Down Expand Up @@ -697,7 +708,7 @@ sr_xavp_t *xavp_clone_level_nodata(sr_xavp_t *xold)
{
return NULL;
}
if(xold->val.type==SR_XTYPE_DATA)
if(xold->val.type==SR_XTYPE_DATA || xold->val.type==SR_XTYPE_SPTR)
{
LM_INFO("xavp value type is 'data' - ignoring in clone\n");
return NULL;
Expand All @@ -720,7 +731,8 @@ sr_xavp_t *xavp_clone_level_nodata(sr_xavp_t *xold)

while(oavp)
{
if(oavp->val.type!=SR_XTYPE_DATA && oavp->val.type!=SR_XTYPE_XAVP)
if(oavp->val.type!=SR_XTYPE_DATA && oavp->val.type!=SR_XTYPE_XAVP
&& oavp->val.type!=SR_XTYPE_SPTR)
{
navp = xavp_new_value(&oavp->name, &oavp->val);
if(navp==NULL)
Expand Down
3 changes: 2 additions & 1 deletion src/core/xavp.h
Expand Up @@ -33,7 +33,8 @@ typedef enum {
SR_XTYPE_LONG, /* long value */
SR_XTYPE_LLONG, /* long long value */
SR_XTYPE_XAVP, /* xavp value */
SR_XTYPE_VPTR, /* void pointer value */
SR_XTYPE_VPTR, /* void pointer value (no free on destroy) */
SR_XTYPE_SPTR, /* void pointer value (shm free on destroy) */
SR_XTYPE_DATA /* custom data value */
} sr_xtype_t;

Expand Down

0 comments on commit 126cfa5

Please sign in to comment.