hnbgw_rx_hnb_deregister: Don't call hnb_context_release()
Don't release the HNB context as there's plenty of code that assumes there's always a HNB context associated with a SCTP connection. Instead, simply unset the hnb_registered flag in the context when processing a HNB_DE-REGISTER. Related: OS#5676 Change-Id: Id5c4f5c900ea049f54afbf58edb84b4dc00b1dcb
This commit is contained in:
parent
c971c657c5
commit
d3382ae952
|
@ -84,6 +84,7 @@ struct hnbgw_cnlink {
|
||||||
struct llist_head map_list;
|
struct llist_head map_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* The lifecycle of the hnb_context object is the same as its conn */
|
||||||
struct hnb_context {
|
struct hnb_context {
|
||||||
/*! Entry in HNB-global list of HNB */
|
/*! Entry in HNB-global list of HNB */
|
||||||
struct llist_head list;
|
struct llist_head list;
|
||||||
|
@ -101,8 +102,7 @@ struct hnb_context {
|
||||||
/*! SCTP stream ID for RUA */
|
/*! SCTP stream ID for RUA */
|
||||||
uint16_t rua_stream;
|
uint16_t rua_stream;
|
||||||
|
|
||||||
/*! True if a HNB-REGISTER-REQ from this HNB has been accepted. Note that
|
/*! True if a HNB-REGISTER-REQ from this HNB has been accepted. */
|
||||||
* this entire data structure is freed if the HNB sends HNB-DE-REGISTER-REQ. */
|
|
||||||
bool hnb_registered;
|
bool hnb_registered;
|
||||||
|
|
||||||
/* linked list of hnbgw_context_map */
|
/* linked list of hnbgw_context_map */
|
||||||
|
|
|
@ -388,7 +388,7 @@ static int hnbgw_rx_hnb_deregister(struct hnb_context *ctx, ANY_t *in)
|
||||||
LOGHNB(ctx, DHNBAP, LOGL_DEBUG, "HNB-DE-REGISTER cause=%s\n", hnbap_cause_str(&ies.cause));
|
LOGHNB(ctx, DHNBAP, LOGL_DEBUG, "HNB-DE-REGISTER cause=%s\n", hnbap_cause_str(&ies.cause));
|
||||||
|
|
||||||
hnbap_free_hnbde_registeries(&ies);
|
hnbap_free_hnbde_registeries(&ies);
|
||||||
hnb_context_release(ctx);
|
ctx->hnb_registered = false;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue