]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Simplify UUID generation in several places.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 29 Sep 2014 21:16:22 +0000 (21:16 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 29 Sep 2014 21:16:22 +0000 (21:16 +0000)
Replace code using ast_uuid_generate() with simpler and faster code using
ast_uuid_generate_str().  The new code avoids a malloc(), free(), and
copy.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@424103 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_pjsip.c
res/res_pjsip_authenticator_digest.c
res/res_pjsip_pubsub.c
res/res_pjsip_session.c

index 9afd26fada1793d266ebcaf99a9150c24bdcccc7..eb5298616700c49e2cb66c8fde0d9745de01cbc8 100644 (file)
@@ -1433,11 +1433,7 @@ static int sip_dialog_create_from(pj_pool_t *pool, pj_str_t *from, const char *u
        char uuid_str[AST_UUID_STR_LEN];
 
        if (ast_strlen_zero(user)) {
-               RAII_VAR(struct ast_uuid *, uuid, ast_uuid_generate(), ast_free_ptr);
-               if (!uuid) {
-                       return -1;
-               }
-               user = ast_uuid_to_str(uuid, uuid_str, sizeof(uuid_str));
+               user = ast_uuid_generate_str(uuid_str, sizeof(uuid_str));
        }
 
        /* Parse the provided target URI so we can determine what transport it will end up using */
@@ -2186,14 +2182,9 @@ int ast_sip_append_body(pjsip_tx_data *tdata, const char *body_text)
 struct ast_taskprocessor *ast_sip_create_serializer(void)
 {
        struct ast_taskprocessor *serializer;
-       RAII_VAR(struct ast_uuid *, uuid, ast_uuid_generate(), ast_free_ptr);
        char name[AST_UUID_STR_LEN];
 
-       if (!uuid) {
-               return NULL;
-       }
-
-       ast_uuid_to_str(uuid, name, sizeof(name));
+       ast_uuid_generate_str(name, sizeof(name));
 
        serializer = ast_threadpool_serializer(name, sip_threadpool);
        if (!serializer) {
index aa512e42093b4a5ecdafa85d9d768bb7438fd705..2a32ded24ac9ed8a6b864864264e0514a3c421c1 100644 (file)
@@ -438,15 +438,16 @@ static struct ast_sip_authenticator digest_authenticator = {
 
 static int build_entity_id(void)
 {
-       RAII_VAR(struct ast_uuid *, uu, ast_uuid_generate(), ast_free_ptr);
-       RAII_VAR(char *, eid, ao2_alloc(AST_UUID_STR_LEN, NULL), ao2_cleanup);
+       char *eid;
 
-       if (!uu || !eid) {
+       eid = ao2_alloc(AST_UUID_STR_LEN, NULL);
+       if (!eid) {
                return -1;
        }
 
-       ast_uuid_to_str(uu, eid, AST_UUID_STR_LEN);
+       ast_uuid_generate_str(eid, AST_UUID_STR_LEN);
        ao2_global_obj_replace_unref(entity_id, eid);
+       ao2_ref(eid, -1);
        return 0;
 }
 
index f4d9dbc2534a11f1065d8c359b19e788392f5636..09a0ecdc1989989ccc1e35c3f5c10c5be622d5a2 100644 (file)
@@ -856,6 +856,7 @@ static void subscription_datastore_destroy(void *obj)
 struct ast_datastore *ast_sip_subscription_alloc_datastore(const struct ast_datastore_info *info, const char *uid)
 {
        RAII_VAR(struct ast_datastore *, datastore, NULL, ao2_cleanup);
+       char uuid_buf[AST_UUID_STR_LEN];
        const char *uid_ptr = uid;
 
        if (!info) {
@@ -870,13 +871,7 @@ struct ast_datastore *ast_sip_subscription_alloc_datastore(const struct ast_data
        datastore->info = info;
        if (ast_strlen_zero(uid)) {
                /* They didn't provide an ID so we'll provide one ourself */
-               struct ast_uuid *uuid = ast_uuid_generate();
-               char uuid_buf[AST_UUID_STR_LEN];
-               if (!uuid) {
-                       return NULL;
-               }
-               uid_ptr = ast_uuid_to_str(uuid, uuid_buf, sizeof(uuid_buf));
-               ast_free(uuid);
+               uid_ptr = ast_uuid_generate_str(uuid_buf, sizeof(uuid_buf));
        }
 
        datastore->uid = ast_strdup(uid_ptr);
index a6fedc918b365b6e111cb3fbdd20af303b687a02..c315602dbfce48ea886b8c0b75683a85a21f853e 100644 (file)
@@ -550,6 +550,7 @@ static void session_datastore_destroy(void *obj)
 struct ast_datastore *ast_sip_session_alloc_datastore(const struct ast_datastore_info *info, const char *uid)
 {
        RAII_VAR(struct ast_datastore *, datastore, NULL, ao2_cleanup);
+       char uuid_buf[AST_UUID_STR_LEN];
        const char *uid_ptr = uid;
 
        if (!info) {
@@ -564,13 +565,7 @@ struct ast_datastore *ast_sip_session_alloc_datastore(const struct ast_datastore
        datastore->info = info;
        if (ast_strlen_zero(uid)) {
                /* They didn't provide an ID so we'll provide one ourself */
-               struct ast_uuid *uuid = ast_uuid_generate();
-               char uuid_buf[AST_UUID_STR_LEN];
-               if (!uuid) {
-                       return NULL;
-               }
-               uid_ptr = ast_uuid_to_str(uuid, uuid_buf, sizeof(uuid_buf));
-               ast_free(uuid);
+               uid_ptr = ast_uuid_generate_str(uuid_buf, sizeof(uuid_buf));
        }
 
        datastore->uid = ast_strdup(uid_ptr);