sched.c: Make not return a sched id of 0.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 30 Nov 2015 22:42:47 +0000 (16:42 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 1 Dec 2015 19:54:04 +0000 (13:54 -0600)
According to the API doxygen a sched ID of 0 is valid.  Unfortunately, 0
was never returned historically and several users incorrectly coded usage
of the returned sched ID assuming that 0 was invalid.

ASTERISK-25476

Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20

main/sched.c

index a7e6703..7b7021d 100644 (file)
@@ -315,9 +315,16 @@ static int add_ids(struct ast_sched_context *con)
                if (!new_id) {
                        break;
                }
-               new_id->id = i;
+
+               /*
+                * According to the API doxygen a sched ID of 0 is valid.
+                * Unfortunately, 0 was never returned historically and
+                * several users incorrectly coded usage of the returned
+                * sched ID assuming that 0 was invalid.
+                */
+               new_id->id = ++con->id_queue_size;
+
                AST_LIST_INSERT_TAIL(&con->id_queue, new_id, list);
-               ++con->id_queue_size;
        }
 
        return con->id_queue_size - original_size;