Index: pbx/pbx_dundi.c
===================================================================
--- pbx/pbx_dundi.c	(revision 83295)
+++ pbx/pbx_dundi.c	(working copy)
@@ -1295,9 +1295,9 @@
 }
 
 /*! \note Called with the peers list already locked */
-static int do_register_expire(void *data)
+static int do_register_expire(const void *data)
 {
-	struct dundi_peer *peer = data;
+	struct dundi_peer *peer = (struct dundi_peer *)data;
 	char eid_str[20];
 	if (option_debug)
 		ast_log(LOG_DEBUG, "Register expired for '%s'\n", dundi_eid_to_str(eid_str, sizeof(eid_str), &peer->eid));
@@ -2984,12 +2984,11 @@
 		free(trans);
 }
 
-static int dundi_rexmit(void *data)
+static int dundi_rexmit(const void *data)
 {
-	struct dundi_packet *pack;
+	struct dundi_packet *pack = (struct dundi_packet *)data;
 	int res;
 	AST_LIST_LOCK(&peers);
-	pack = data;
 	if (pack->retrans < 1) {
 		pack->retransid = -1;
 		if (!ast_test_flag(pack->parent, FLAG_ISQUAL))
@@ -3079,9 +3078,9 @@
 	return -1;
 }
 
-static int do_autokill(void *data)
+static int do_autokill(const void *data)
 {
-	struct dundi_transaction *trans = data;
+	struct dundi_transaction *trans = (struct dundi_transaction *)data;
 	char eid_str[20];
 	ast_log(LOG_NOTICE, "Transaction to '%s' took too long to ACK, destroying\n", 
 		dundi_eid_to_str(eid_str, sizeof(eid_str), &trans->them_eid));
@@ -4267,10 +4266,10 @@
 }
 
 /* \note Called with the peers list already locked */
-static int do_register(void *data)
+static int do_register(const void *data)
 {
 	struct dundi_ie_data ied;
-	struct dundi_peer *peer = data;
+	struct dundi_peer *peer = (struct dundi_peer *)data;
 	char eid_str[20];
 	char eid_str2[20];
 	if (option_debug)
@@ -4294,10 +4293,9 @@
 	return 0;
 }
 
-static int do_qualify(void *data)
+static int do_qualify(const void *data)
 {
-	struct dundi_peer *peer;
-	peer = data;
+	struct dundi_peer *peer = (struct dundi_peer *)data;
 	peer->qualifyid = -1;
 	qualify_peer(peer, 0);
 	return 0;
Index: channels/misdn_config.c
===================================================================
--- channels/misdn_config.c	(revision 83295)
+++ channels/misdn_config.c	(working copy)
@@ -1007,7 +1007,7 @@
 
 	misdn_cfg_get(0, MISDN_GEN_MISDN_INIT, &misdn_init, sizeof(misdn_init));
 
-	if (misdn_init) {
+	if (!ast_strlen_zero(misdn_init)) {
 		fp = fopen(misdn_init, "r");
 		if (fp) {
 			while(fgets(line, sizeof(line), fp)) {
Index: channels/chan_h323.c
===================================================================
--- channels/chan_h323.c	(revision 83295)
+++ channels/chan_h323.c	(working copy)
@@ -311,9 +311,9 @@
 	ast_free(peer);
 }
 
-static int oh323_simulate_dtmf_end(void *data)
+static int oh323_simulate_dtmf_end(const void *data)
 {
-	struct oh323_pvt *pvt = data;
+	struct oh323_pvt *pvt = (struct oh323_pvt *)data;
 
 	if (pvt) {
 		ast_mutex_lock(&pvt->lock);
Index: channels/chan_sip.c
===================================================================
--- channels/chan_sip.c	(revision 83295)
+++ channels/chan_sip.c	(working copy)
@@ -1483,7 +1483,7 @@
 static int __sip_xmit(struct sip_pvt *p, char *data, int len);
 static int __sip_reliable_xmit(struct sip_pvt *p, int seqno, int resp, char *data, int len, int fatal, int sipmethod);
 static int __transmit_response(struct sip_pvt *p, const char *msg, const struct sip_request *req, enum xmittype reliable);
-static int retrans_pkt(void *data);
+static int retrans_pkt(const void *data);
 static int transmit_sip_request(struct sip_pvt *p, struct sip_request *req);
 static int transmit_response_using_temp(ast_string_field callid, struct sockaddr_in *sin, int useglobal_nat, const int intended_method, const struct sip_request *req, const char *msg);
 static int transmit_response(struct sip_pvt *p, const char *msg, const struct sip_request *req);
@@ -1515,7 +1515,7 @@
 /*--- Dialog management */
 static struct sip_pvt *sip_alloc(ast_string_field callid, struct sockaddr_in *sin,
 				 int useglobal_nat, const int intended_method);
-static int __sip_autodestruct(void *data);
+static int __sip_autodestruct(const void *data);
 static void sip_scheddestroy(struct sip_pvt *p, int ms);
 static void sip_cancel_destroy(struct sip_pvt *p);
 static struct sip_pvt *sip_destroy(struct sip_pvt *p);
@@ -1523,7 +1523,7 @@
 static void __sip_ack(struct sip_pvt *p, int seqno, int resp, int sipmethod);
 static void __sip_pretend_ack(struct sip_pvt *p);
 static int __sip_semi_ack(struct sip_pvt *p, int seqno, int resp, int sipmethod);
-static int auto_congest(void *arg);
+static int auto_congest(const void *arg);
 static int update_call_counter(struct sip_pvt *fup, int event);
 static int hangup_sip2cause(int cause);
 static const char *hangup_cause2sip(int cause);
@@ -1579,7 +1579,7 @@
 /*--- Misc functions */
 static int sip_do_reload(enum channelreloadreason reason);
 static int reload_config(enum channelreloadreason reason);
-static int expire_register(void *data);
+static int expire_register(const void *data);
 static void *do_monitor(void *data);
 static int restart_monitor(void);
 static int sip_addrcmp(char *name, struct sockaddr_in *sin);	/* Support for peer matching */
@@ -1590,7 +1590,7 @@
 /*--- Device monitoring and Device/extension state/event handling */
 static int cb_extensionstate(char *context, char* exten, int state, void *data);
 static int sip_devicestate(void *data);
-static int sip_poke_noanswer(void *data);
+static int sip_poke_noanswer(const void *data);
 static int sip_poke_peer(struct sip_peer *peer);
 static void sip_poke_all_peers(void);
 static void sip_peer_hold(struct sip_pvt *p, int hold);
@@ -1667,7 +1667,7 @@
 static void register_peer_exten(struct sip_peer *peer, int onoff);
 static struct sip_peer *find_peer(const char *peer, struct sockaddr_in *sin, int realtime);
 static struct sip_user *find_user(const char *name, int realtime);
-static int sip_poke_peer_s(void *data);
+static int sip_poke_peer_s(const void *data);
 static enum parse_register_result parse_register_contact(struct sip_pvt *pvt, struct sip_peer *p, struct sip_request *req);
 static void reg_source_db(struct sip_peer *peer);
 static void destroy_association(struct sip_peer *peer);
@@ -1688,9 +1688,9 @@
 static void sip_registry_destroy(struct sip_registry *reg);
 static int sip_register(char *value, int lineno);
 static const char *regstate2str(enum sipregistrystate regstate) attribute_const;
-static int sip_reregister(void *data);
+static int sip_reregister(const void *data);
 static int __sip_do_register(struct sip_registry *r);
-static int sip_reg_timeout(void *data);
+static int sip_reg_timeout(const void *data);
 static void sip_send_all_registers(void);
 
 /*--- Parsing SIP requests and responses */
@@ -2243,9 +2243,9 @@
 }
 
 /*! \brief Retransmit SIP message if no answer (Called from scheduler) */
-static int retrans_pkt(void *data)
+static int retrans_pkt(const void *data)
 {
-	struct sip_pkt *pkt = data, *prev, *cur = NULL;
+	struct sip_pkt *pkt = (struct sip_pkt *)data, *prev, *cur = NULL;
 	int reschedule = DEFAULT_RETRANS;
 	int xmitres = 0;
 
@@ -2414,9 +2414,9 @@
  * and we are called using that reference. So if the event is not
  * rescheduled, we need to call dialog_unref().
  */
-static int __sip_autodestruct(void *data)
+static int __sip_autodestruct(const void *data)
 {
-	struct sip_pvt *p = data;
+	struct sip_pvt *p = (struct sip_pvt *)data;
 
 	/* If this is a subscription, tell the phone that we got a timeout */
 	if (p->subscribed) {
@@ -3473,9 +3473,9 @@
 /*! \brief Scheduled congestion on a call.
  * Only called by the scheduler, must return the reference when done.
  */
-static int auto_congest(void *arg)
+static int auto_congest(const void *arg)
 {
-	struct sip_pvt *p = arg;
+	struct sip_pvt *p = (struct sip_pvt *)arg;
 
 	sip_pvt_lock(p);
 	p->initid = -1;	/* event gone, will not be rescheduled */
@@ -8063,7 +8063,7 @@
  * We assume the reference so the sip_registry is valid, since it
  * is stored in the scheduled event anyways.
  */
-static int sip_reregister(void *data) 
+static int sip_reregister(const void *data) 
 {
 	/* if we are here, we know that we need to reregister. */
 	struct sip_registry *r= registry_addref((struct sip_registry *) data);
@@ -8100,7 +8100,7 @@
  * This is called by the scheduler so the event is not pending anymore when
  * we are called.
  */
-static int sip_reg_timeout(void *data)
+static int sip_reg_timeout(const void *data)
 {
 
 	/* if we are here, our registration timed out, so we'll just do it over */
@@ -8537,9 +8537,9 @@
 }
 
 /*! \brief Expire registration of SIP peer */
-static int expire_register(void *data)
+static int expire_register(const void *data)
 {
-	struct sip_peer *peer = data;
+	struct sip_peer *peer = (struct sip_peer *)data;
 	
 	if (!peer)		/* Hmmm. We have no peer. Weird. */
 		return 0;
@@ -8569,9 +8569,9 @@
 }
 
 /*! \brief Poke peer (send qualify to check if peer is alive and well) */
-static int sip_poke_peer_s(void *data)
+static int sip_poke_peer_s(const void *data)
 {
-	struct sip_peer *peer = data;
+	struct sip_peer *peer = (struct sip_peer *)data;
 
 	peer->pokeexpire = -1;
 	sip_poke_peer(peer);
@@ -16668,9 +16668,9 @@
 }
 
 /*! \brief React to lack of answer to Qualify poke */
-static int sip_poke_noanswer(void *data)
+static int sip_poke_noanswer(const void *data)
 {
-	struct sip_peer *peer = data;
+	struct sip_peer *peer = (struct sip_peer *)data;
 	
 	peer->pokeexpire = -1;
 	if (peer->lastms > -1) {
Index: channels/chan_iax2.c
===================================================================
--- channels/chan_iax2.c	(revision 83295)
+++ channels/chan_iax2.c	(working copy)
@@ -738,8 +738,8 @@
 	enum iax2_thread_type type;
 	enum iax2_thread_iostate iostate;
 #ifdef SCHED_MULTITHREADED
-	void (*schedfunc)(void *);
-	void *scheddata;
+	void (*schedfunc)(const void *);
+	const void *scheddata;
 #endif
 #ifdef DEBUG_SCHED_MULTITHREAD
 	char curfunc[80];
@@ -873,7 +873,7 @@
 static struct timeval lastused[IAX_MAX_CALLS];
 
 static enum ast_bridge_result iax2_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc, int timeoutms);
-static int expire_registry(void *data);
+static int expire_registry(const void *data);
 static int iax2_answer(struct ast_channel *c);
 static int iax2_call(struct ast_channel *c, char *dest, int timeout);
 static int iax2_devicestate(void *data);
@@ -1075,7 +1075,7 @@
 }
 
 #ifdef SCHED_MULTITHREADED
-static int __schedule_action(void (*func)(void *data), void *data, const char *funcname)
+static int __schedule_action(void (*func)(const void *data), const void *data, const char *funcname)
 {
 	struct iax2_thread *thread = NULL;
 	static time_t lasterror;
@@ -1103,7 +1103,7 @@
 #define schedule_action(func, data) __schedule_action(func, data, __PRETTY_FUNCTION__)
 #endif
 
-static int iax2_sched_replace(int old_id, struct sched_context *con, int when, ast_sched_cb callback, void *data)
+static int iax2_sched_replace(int old_id, struct sched_context *con, int when, ast_sched_cb callback, const void *data)
 {
 	int res;
 
@@ -1113,7 +1113,7 @@
 	return res;
 }
 
-static int iax2_sched_add(struct sched_context *con, int when, ast_sched_cb callback, void *data)
+static int iax2_sched_add(struct sched_context *con, int when, ast_sched_cb callback, const void *data)
 {
 	int res;
 
@@ -1123,9 +1123,9 @@
 	return res;
 }
 
-static int send_ping(void *data);
+static int send_ping(const void *data);
 
-static void __send_ping(void *data)
+static void __send_ping(const void *data)
 {
 	int callno = (long)data;
 	ast_mutex_lock(&iaxsl[callno]);
@@ -1136,7 +1136,7 @@
 	ast_mutex_unlock(&iaxsl[callno]);
 }
 
-static int send_ping(void *data)
+static int send_ping(const void *data)
 {
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__send_ping, data))
@@ -1157,9 +1157,9 @@
 	return e;
 }
 
-static int send_lagrq(void *data);
+static int send_lagrq(const void *data);
 
-static void __send_lagrq(void *data)
+static void __send_lagrq(const void *data)
 {
 	int callno = (long)data;
 	/* Ping only if it's real not if it's bridged */
@@ -1171,7 +1171,7 @@
 	ast_mutex_unlock(&iaxsl[callno]);
 }
 
-static int send_lagrq(void *data)
+static int send_lagrq(const void *data)
 {
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__send_lagrq, data))
@@ -2178,12 +2178,12 @@
 	return 0;
 }
 
-static int attempt_transmit(void *data);
-static void __attempt_transmit(void *data)
+static int attempt_transmit(const void *data);
+static void __attempt_transmit(const void *data)
 {
 	/* Attempt to transmit the frame to the remote peer...
 	   Called without iaxsl held. */
-	struct iax_frame *f = data;
+	struct iax_frame *f = (struct iax_frame *)data;
 	int freeme = 0;
 	int callno = f->callno;
 	/* Make sure this call is still active */
@@ -2259,7 +2259,7 @@
 	}
 }
 
-static int attempt_transmit(void *data)
+static int attempt_transmit(const void *data)
 {
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__attempt_transmit, data))
@@ -2280,7 +2280,7 @@
 	} else if ((peer = find_peer(argv[3], 0))) {
 		if(ast_test_flag(peer, IAX_RTCACHEFRIENDS)) {
 			ast_set_flag(peer, IAX_RTAUTOCLEAR);
-			expire_registry((void *)peer->name);
+			expire_registry((const void *)peer->name);
 			ast_cli(fd, "OK peer %s was removed from the cache.\n", argv[3]);
 		} else {
 			ast_cli(fd, "SORRY peer %s is not eligible for this operation.\n", argv[3]);
@@ -2589,7 +2589,7 @@
 	}
 }
 
-static int get_from_jb(void *p);
+static int get_from_jb(const void *p);
 
 static void update_jbsched(struct chan_iax2_pvt *pvt)
 {
@@ -2608,7 +2608,7 @@
 		CALLNO_TO_PTR(pvt->callno));
 }
 
-static void __get_from_jb(void *p) 
+static void __get_from_jb(const void *p) 
 {
 	int callno = PTR_TO_CALLNO(p);
 	struct chan_iax2_pvt *pvt = NULL;
@@ -2684,7 +2684,7 @@
 	ast_mutex_unlock(&iaxsl[callno]);
 }
 
-static int get_from_jb(void *data)
+static int get_from_jb(const void *data)
 {
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__get_from_jb, data))
@@ -2906,7 +2906,7 @@
 		ast_copy_flags(peer, &globalflags, IAX_RTAUTOCLEAR|IAX_RTCACHEFRIENDS);
 		if (ast_test_flag(peer, IAX_RTAUTOCLEAR)) {
 			peer->expire = iax2_sched_replace(peer->expire, sched, 
-				(global_rtautoclear) * 1000, expire_registry, (void *) peer->name);
+				(global_rtautoclear) * 1000, expire_registry, (const void *)peer->name);
 		}
 		ao2_link(peers, peer_ref(peer));
 		if (ast_test_flag(peer, IAX_DYNAMIC))
@@ -3080,7 +3080,7 @@
 	return res;
 }
 
-static void __auto_congest(void *nothing)
+static void __auto_congest(const void *nothing)
 {
 	int callno = PTR_TO_CALLNO(nothing);
 	struct ast_frame f = { AST_FRAME_CONTROL, AST_CONTROL_CONGESTION };
@@ -3093,7 +3093,7 @@
 	ast_mutex_unlock(&iaxsl[callno]);
 }
 
-static int auto_congest(void *data)
+static int auto_congest(const void *data)
 {
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__auto_congest, data))
@@ -5780,14 +5780,14 @@
 
 static int iax2_do_register(struct iax2_registry *reg);
 
-static void __iax2_do_register_s(void *data)
+static void __iax2_do_register_s(const void *data)
 {
-	struct iax2_registry *reg = data;
+	struct iax2_registry *reg = (struct iax2_registry *)data;
 	reg->expire = -1;
 	iax2_do_register(reg);
 }
 
-static int iax2_do_register_s(void *data)
+static int iax2_do_register_s(const void *data)
 {
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__iax2_do_register_s, data))
@@ -6065,9 +6065,9 @@
 }
 static void prune_peers(void);
 
-static void __expire_registry(void *data)
+static void __expire_registry(const void *data)
 {
-	char *name = data;
+	const char *name = data;
 	struct iax2_peer *peer = NULL;
 	struct iax2_peer tmp_peer = {
 		.name = name,
@@ -6100,7 +6100,7 @@
 	peer_unref(peer);
 }
 
-static int expire_registry(void *data)
+static int expire_registry(const void *data)
 {
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__expire_registry, data))
@@ -6136,7 +6136,7 @@
 					p->addr.sin_port = htons(atoi(c));
 					ast_device_state_changed("IAX2/%s", p->name); /* Activate notification */
 					p->expire = iax2_sched_replace(p->expire, sched, 
-						(p->expiry + 10) * 1000, expire_registry, (void *) p->name);
+						(p->expiry + 10) * 1000, expire_registry, (const void *)p->name);
 					if (iax2_regfunk)
 						iax2_regfunk(p->name, 1);
 					register_peer_exten(p, 1);
@@ -6240,7 +6240,7 @@
 		p->expiry = refresh;
 	}
 	if (p->expiry && sin->sin_addr.s_addr)
-		p->expire = iax2_sched_add(sched, (p->expiry + 10) * 1000, expire_registry, (void *)p->name);
+		p->expire = iax2_sched_add(sched, (p->expiry + 10) * 1000, expire_registry, (const void *)p->name);
 	iax_ie_append_str(&ied, IAX_IE_USERNAME, p->name);
 	iax_ie_append_int(&ied, IAX_IE_DATETIME, iax2_datetime(p->zonetag));
 	if (sin->sin_addr.s_addr) {
@@ -6385,7 +6385,7 @@
 	iax2_destroy_helper(iaxs[callno]);
 }
 
-static void __auth_reject(void *nothing)
+static void __auth_reject(const void *nothing)
 {
 	/* Called from IAX thread only, without iaxs lock */
 	int callno = (int)(long)(nothing);
@@ -6405,7 +6405,7 @@
 	ast_mutex_unlock(&iaxsl[callno]);
 }
 
-static int auth_reject(void *data)
+static int auth_reject(const void *data)
 {
 	int callno = (int)(long)(data);
 	ast_mutex_lock(&iaxsl[callno]);
@@ -6434,7 +6434,7 @@
 	return 0;
 }
 
-static void __auto_hangup(void *nothing)
+static void __auto_hangup(const void *nothing)
 {
 	/* Called from IAX thread only, without iaxs lock */
 	int callno = (int)(long)(nothing);
@@ -6449,7 +6449,7 @@
 	ast_mutex_unlock(&iaxsl[callno]);
 }
 
-static int auto_hangup(void *data)
+static int auto_hangup(const void *data)
 {
 	int callno = (int)(long)(data);
 	ast_mutex_lock(&iaxsl[callno]);
@@ -6497,15 +6497,15 @@
 	AST_LIST_UNLOCK(&frame_queue);
 }
 
-static void __iax2_poke_peer_s(void *data)
+static void __iax2_poke_peer_s(const void *data)
 {
-	struct iax2_peer *peer = data;
+	struct iax2_peer *peer = (struct iax2_peer *)data;
 	iax2_poke_peer(peer, 0);
 }
 
-static int iax2_poke_peer_s(void *data)
+static int iax2_poke_peer_s(const void *data)
 {
-	struct iax2_peer *peer = data;
+	struct iax2_peer *peer = (struct iax2_peer *)data;
 	peer->pokeexpire = -1;
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__iax2_poke_peer_s, data))
@@ -8961,9 +8961,9 @@
 	return RESULT_SUCCESS;
 }
 
-static void __iax2_poke_noanswer(void *data)
+static void __iax2_poke_noanswer(const void *data)
 {
-	struct iax2_peer *peer = data;
+	struct iax2_peer *peer = (struct iax2_peer *)data;
 	if (peer->lastms > -1) {
 		ast_log(LOG_NOTICE, "Peer '%s' is now UNREACHABLE! Time: %d\n", peer->name, peer->lastms);
 		manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: IAX2/%s\r\nPeerStatus: Unreachable\r\nTime: %d\r\n", peer->name, peer->lastms);
@@ -8980,9 +8980,9 @@
 	peer->pokeexpire = iax2_sched_add(sched, peer->pokefreqnotok, iax2_poke_peer_s, peer);
 }
 
-static int iax2_poke_noanswer(void *data)
+static int iax2_poke_noanswer(const void *data)
 {
-	struct iax2_peer *peer = data;
+	struct iax2_peer *peer = (struct iax2_peer *)data;
 	peer->pokeexpire = -1;
 #ifdef SCHED_MULTITHREADED
 	if (schedule_action(__iax2_poke_noanswer, data))
Index: channels/chan_misdn.c
===================================================================
--- channels/chan_misdn.c	(revision 83295)
+++ channels/chan_misdn.c	(working copy)
@@ -621,7 +621,7 @@
 	pthread_kill(misdn_tasks_thread, SIGUSR1);
 }
 
-static inline int _misdn_tasks_add_variable (int timeout, ast_sched_cb callback, void *data, int variable)
+static inline int _misdn_tasks_add_variable (int timeout, ast_sched_cb callback, const void *data, int variable)
 {
 	int task_id;
 
@@ -634,12 +634,12 @@
 	return task_id;
 }
 
-static int misdn_tasks_add (int timeout, ast_sched_cb callback, void *data)
+static int misdn_tasks_add (int timeout, ast_sched_cb callback, const void *data)
 {
 	return _misdn_tasks_add_variable(timeout, callback, data, 0);
 }
 
-static int misdn_tasks_add_variable (int timeout, ast_sched_cb callback, void *data)
+static int misdn_tasks_add_variable (int timeout, ast_sched_cb callback, const void *data)
 {
 	return _misdn_tasks_add_variable(timeout, callback, data, 1);
 }
@@ -649,14 +649,14 @@
 	ast_sched_del(misdn_tasks, task_id);
 }
 
-static int misdn_l1_task (void *data)
+static int misdn_l1_task (const void *data)
 {
 	misdn_lib_isdn_l1watcher(*(int *)data);
 	chan_misdn_log(5, *(int *)data, "L1watcher timeout\n");
 	return 1;
 }
 
-static int misdn_overlap_dial_task (void *data)
+static int misdn_overlap_dial_task (const void *data)
 {
 	struct timeval tv_end, tv_now;
 	int diff;
Index: channels/chan_mgcp.c
===================================================================
--- channels/chan_mgcp.c	(revision 83295)
+++ channels/chan_mgcp.c	(working copy)
@@ -638,7 +638,7 @@
 	return mgcp_queue_frame(sub, &f);
 }
 
-static int retrans_pkt(void *data)
+static int retrans_pkt(const void *data)
 {
 	struct mgcp_gateway *gw = (struct mgcp_gateway *)data;
 	struct mgcp_message *cur, *exq = NULL, *w, *prev;
Index: include/asterisk/channel.h
===================================================================
--- include/asterisk/channel.h	(revision 83295)
+++ include/asterisk/channel.h	(working copy)
@@ -428,7 +428,7 @@
 	int oldwriteformat;				/*!< Original writer format */
 	
 	int timingfd;					/*!< Timing fd */
-	int (*timingfunc)(void *data);
+	int (*timingfunc)(const void *data);
 	void *timingdata;
 
 	enum ast_channel_state _state;			/*!< State of line -- Don't write directly, use ast_setstate() */
@@ -1234,7 +1234,7 @@
 
 /* If built with zaptel optimizations, force a scheduled expiration on the
    timer fd, at which point we call the callback function / data */
-int ast_settimeout(struct ast_channel *c, int samples, int (*func)(void *data), void *data);
+int ast_settimeout(struct ast_channel *c, int samples, int (*func)(const void *data), void *data);
 
 /*!	\brief Transfer a channel (if supported).  Returns -1 on error, 0 if not supported
    and 1 if supported and requested 
Index: include/asterisk/sched.h
===================================================================
--- include/asterisk/sched.h	(revision 83295)
+++ include/asterisk/sched.h	(working copy)
@@ -55,7 +55,7 @@
  * \return returns a 0 if it should not be run again, or non-zero if it should be
  * rescheduled to run again
  */
-typedef int (*ast_sched_cb)(void *data);
+typedef int (*ast_sched_cb)(const void *data);
 #define AST_SCHED_CB(a) ((ast_sched_cb)(a))
 
 /*! \brief Adds a scheduled event
@@ -69,7 +69,7 @@
  * \param data data to pass to the callback
  * \return Returns a schedule item ID on success, -1 on failure
  */
-int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, void *data);
+int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, const void *data);
 
 /*!
  * \brief replace a scheduler entry
@@ -81,7 +81,7 @@
  * \retval -1 failure
  * \retval otherwise, returns scheduled item ID
  */
-int ast_sched_replace(int old_id, struct sched_context *con, int when, ast_sched_cb callback, void *data);
+int ast_sched_replace(int old_id, struct sched_context *con, int when, ast_sched_cb callback, const void *data);
 
 /*!Adds a scheduled event with rescheduling support
  * \param con Scheduler context to add
@@ -96,7 +96,7 @@
  * If callback returns 0, no further events will be re-scheduled
  * \return Returns a schedule item ID on success, -1 on failure
  */
-int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, void *data, int variable);
+int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, const void *data, int variable);
 
 /*!
  * \brief replace a scheduler entry
@@ -108,7 +108,7 @@
  * \retval -1 failure
  * \retval otherwise, returns scheduled item ID
  */
-int ast_sched_replace_variable(int old_id, struct sched_context *con, int when, ast_sched_cb callback, void *data, int variable);
+int ast_sched_replace_variable(int old_id, struct sched_context *con, int when, ast_sched_cb callback, const void *data, int variable);
 
 /*! \brief Deletes a scheduled event
  * Remove this event from being run.  A procedure should not remove its
Index: main/cdr.c
===================================================================
--- main/cdr.c	(revision 83295)
+++ main/cdr.c	(working copy)
@@ -1123,7 +1123,7 @@
 	}
 }
 
-static int submit_scheduled_batch(void *data)
+static int submit_scheduled_batch(const void *data)
 {
 	ast_cdr_submit_batch(0);
 	/* manually reschedule from this point in time */
Index: main/channel.c
===================================================================
--- main/channel.c	(revision 83295)
+++ main/channel.c	(working copy)
@@ -1545,13 +1545,13 @@
 	ast_channel_unlock(chan);
 }
 
-static int generator_force(void *data)
+static int generator_force(const void *data)
 {
 	/* Called if generator doesn't have data */
 	void *tmp;
 	int res;
 	int (*generate)(struct ast_channel *chan, void *tmp, int datalen, int samples);
-	struct ast_channel *chan = data;
+	struct ast_channel *chan = (struct ast_channel *)data;
 	tmp = chan->generatordata;
 	chan->generatordata = NULL;
 	generate = chan->generator->generate;
@@ -1971,7 +1971,7 @@
 	return ast_waitfordigit_full(c, ms, -1, -1);
 }
 
-int ast_settimeout(struct ast_channel *c, int samples, int (*func)(void *data), void *data)
+int ast_settimeout(struct ast_channel *c, int samples, int (*func)(const void *data), void *data)
 {
 	int res = -1;
 #ifdef HAVE_ZAPTEL
@@ -2182,7 +2182,7 @@
 			ioctl(chan->timingfd, ZT_TIMERACK, &blah);
 			if (chan->timingfunc) {
 				/* save a copy of func/data before unlocking the channel */
-				int (*func)(void *) = chan->timingfunc;
+				int (*func)(const void *) = chan->timingfunc;
 				void *data = chan->timingdata;
 				ast_channel_unlock(chan);
 				func(data);
Index: main/ast_expr2f.c
===================================================================
--- main/ast_expr2f.c	(revision 83295)
+++ main/ast_expr2f.c	(working copy)
@@ -1482,7 +1482,7 @@
 void ast_yyset_column(int column_no, yyscan_t yyscanner);
 int ast_yyget_column(yyscan_t yyscanner);
 static int curlycount = 0;
-static char *expr2_token_subst(char *mess);
+static char *expr2_token_subst(const char *mess);
 
 #line 1488 "ast_expr2f.c"
 
@@ -3310,11 +3310,11 @@
 };
 
 
-static char *expr2_token_subst(char *mess)
+static char *expr2_token_subst(const char *mess)
 {
 	/* calc a length, malloc, fill, and return; yyerror had better free it! */
 	int len=0,i;
-	char *p;
+	const char *p;
 	char *res, *s,*t;
 	int expr2_token_equivs_entries = sizeof(expr2_token_equivs1)/sizeof(char*);
 
@@ -3359,7 +3359,7 @@
 	char spacebuf[8000]; /* best safe than sorry */
 	char spacebuf2[8000]; /* best safe than sorry */
 	int i=0;
-	char *s2 = expr2_token_subst((char *)s);
+	char *s2 = expr2_token_subst(s);
 	spacebuf[0] = 0;
 	
 	for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
Index: main/ast_expr2.fl
===================================================================
--- main/ast_expr2.fl	(revision 83295)
+++ main/ast_expr2.fl	(working copy)
@@ -110,7 +110,7 @@
 void ast_yyset_column(int column_no, yyscan_t yyscanner);
 int ast_yyget_column(yyscan_t yyscanner);
 static int curlycount = 0;
-static char *expr2_token_subst(char *mess);
+static char *expr2_token_subst(const char *mess);
 %}
 
 %option prefix="ast_yy"
@@ -348,11 +348,11 @@
 };
 
 
-static char *expr2_token_subst(char *mess)
+static char *expr2_token_subst(const char *mess)
 {
 	/* calc a length, malloc, fill, and return; yyerror had better free it! */
 	int len=0,i;
-	char *p;
+	const char *p;
 	char *res, *s,*t;
 	int expr2_token_equivs_entries = sizeof(expr2_token_equivs1)/sizeof(char*);
 
@@ -397,7 +397,7 @@
 	char spacebuf[8000]; /* best safe than sorry */
 	char spacebuf2[8000]; /* best safe than sorry */
 	int i=0;
-	char *s2 = expr2_token_subst((char *)s);
+	char *s2 = expr2_token_subst(s);
 	spacebuf[0] = 0;
 	
 	for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
Index: main/rtp.c
===================================================================
--- main/rtp.c	(revision 83295)
+++ main/rtp.c	(working copy)
@@ -181,10 +181,10 @@
 };
 
 /* Forward declarations */
-static int ast_rtcp_write(void *data);
+static int ast_rtcp_write(const void *data);
 static void timeval2ntp(struct timeval tv, unsigned int *msw, unsigned int *lsw);
-static int ast_rtcp_write_sr(void *data);
-static int ast_rtcp_write_rr(void *data);
+static int ast_rtcp_write_sr(const void *data);
+static int ast_rtcp_write_rr(const void *data);
 static unsigned int ast_rtcp_calc_interval(struct ast_rtp *rtp);
 static int ast_rtp_senddigit_continuation(struct ast_rtp *rtp);
 int ast_rtp_senddigit_end(struct ast_rtp *rtp, char digit);
@@ -2654,9 +2654,9 @@
 }
 
 /*! \brief Send RTCP sender's report */
-static int ast_rtcp_write_sr(void *data)
+static int ast_rtcp_write_sr(const void *data)
 {
-	struct ast_rtp *rtp = data;
+	struct ast_rtp *rtp = (struct ast_rtp *)data;
 	int res;
 	int len = 0;
 	struct timeval now;
@@ -2791,9 +2791,9 @@
 }
 
 /*! \brief Send RTCP recipient's report */
-static int ast_rtcp_write_rr(void *data)
+static int ast_rtcp_write_rr(const void *data)
 {
-	struct ast_rtp *rtp = data;
+	struct ast_rtp *rtp = (struct ast_rtp *)data;
 	int res;
 	int len = 32;
 	unsigned int lost;
@@ -2890,9 +2890,9 @@
 /*! \brief Write and RTCP packet to the far end
  * \note Decide if we are going to send an SR (with Reception Block) or RR 
  * RR is sent if we have not sent any rtp packets in the previous interval */
-static int ast_rtcp_write(void *data)
+static int ast_rtcp_write(const void *data)
 {
-	struct ast_rtp *rtp = data;
+	struct ast_rtp *rtp = (struct ast_rtp *)data;
 	int res;
 	
 	if (!rtp || !rtp->rtcp)
Index: main/db1-ast/hash/hash.c
===================================================================
--- main/db1-ast/hash/hash.c	(revision 83295)
+++ main/db1-ast/hash/hash.c	(working copy)
@@ -68,7 +68,7 @@
 static int   hash_seq __P((const DB *, DBT *, DBT *, u_int32_t));
 static int   hash_sync __P((const DB *, u_int32_t));
 static int   hdestroy __P((HTAB *));
-static HTAB *init_hash __P((HTAB *, const char *, HASHINFO *));
+static HTAB *init_hash __P((HTAB *, const char *, const HASHINFO *));
 static int   init_htab __P((HTAB *, int));
 #if BYTE_ORDER == LITTLE_ENDIAN
 static void  swap_header __P((HTAB *));
@@ -133,7 +133,7 @@
 		(void)fcntl(hashp->fp, F_SETFD, 1);
 	}
 	if (new_table) {
-		if (!(hashp = init_hash(hashp, file, (HASHINFO *)info)))
+		if (!(hashp = init_hash(hashp, file, info)))
 			RETURN_ERROR(errno, error1);
 	} else {
 		/* Table already exists */
@@ -280,7 +280,7 @@
 init_hash(hashp, file, info)
 	HTAB *hashp;
 	const char *file;
-	HASHINFO *info;
+	const HASHINFO *info;
 {
 #ifdef _STATBUF_ST_BLKSIZE
 	struct stat statbuf;
Index: main/sched.c
===================================================================
--- main/sched.c	(revision 83295)
+++ main/sched.c	(working copy)
@@ -56,7 +56,7 @@
 	struct timeval when;          /*!< Absolute time event should take place */
 	int resched;                  /*!< When to reschedule */
 	int variable;                 /*!< Use return value from callback to reschedule */
-	void *data;                   /*!< Data */
+	const void *data;             /*!< Data */
 	ast_sched_cb callback;        /*!< Callback */
 };
 
@@ -207,7 +207,7 @@
 	return 0;
 }
 
-int ast_sched_replace_variable(int old_id, struct sched_context *con, int when, ast_sched_cb callback, void *data, int variable)
+int ast_sched_replace_variable(int old_id, struct sched_context *con, int when, ast_sched_cb callback, const void *data, int variable)
 {
 	/* 0 means the schedule item is new; do not delete */
 	if (old_id > 0)
@@ -218,7 +218,7 @@
 /*! \brief
  * Schedule callback(data) to happen when ms into the future
  */
-int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, void *data, int variable)
+int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, const void *data, int variable)
 {
 	struct sched *tmp;
 	int res = -1;
@@ -251,14 +251,14 @@
 	return res;
 }
 
-int ast_sched_replace(int old_id, struct sched_context *con, int when, ast_sched_cb callback, void *data)
+int ast_sched_replace(int old_id, struct sched_context *con, int when, ast_sched_cb callback, const void *data)
 {
 	if (old_id > -1)
 		ast_sched_del(con, old_id);
 	return ast_sched_add(con, when, callback, data);
 }
 
-int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, void *data)
+int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, const void *data)
 {
 	return ast_sched_add_variable(con, when, callback, data, 0);
 }
Index: main/dnsmgr.c
===================================================================
--- main/dnsmgr.c	(revision 83295)
+++ main/dnsmgr.c	(working copy)
@@ -217,9 +217,9 @@
 	return NULL;
 }
 
-static int refresh_list(void *data)
+static int refresh_list(const void *data)
 {
-	struct refresh_info *info = data;
+	struct refresh_info *info = (struct refresh_info *)data;
 	struct ast_dnsmgr_entry *entry;
 
 	/* if a refresh or reload is already in progress, exit now */
Index: main/file.c
===================================================================
--- main/file.c	(revision 83295)
+++ main/file.c	(working copy)
@@ -609,7 +609,7 @@
 	FSREAD_SUCCESS_NOSCHED,
 };
 
-static int ast_fsread_audio(void *data);
+static int ast_fsread_audio(const void *data);
 
 static enum fsread_res ast_readaudio_callback(struct ast_filestream *s)
 {
@@ -648,9 +648,9 @@
 	return FSREAD_FAILURE;
 }
 
-static int ast_fsread_audio(void *data)
+static int ast_fsread_audio(const void *data)
 {
-	struct ast_filestream *fs = data;
+	struct ast_filestream *fs = (struct ast_filestream *)data;
 	enum fsread_res res;
 
 	res = ast_readaudio_callback(fs);
@@ -661,7 +661,7 @@
 	return 0;
 }
 
-static int ast_fsread_video(void *data);
+static int ast_fsread_video(const void *data);
 
 static enum fsread_res ast_readvideo_callback(struct ast_filestream *s)
 {
@@ -687,9 +687,9 @@
 	return FSREAD_SUCCESS_SCHED;
 }
 
-static int ast_fsread_video(void *data)
+static int ast_fsread_video(const void *data)
 {
-	struct ast_filestream *fs = data;
+	struct ast_filestream *fs = (struct ast_filestream *)data;
 	enum fsread_res res;
 
 	res = ast_readvideo_callback(fs);
Index: res/res_config_pgsql.c
===================================================================
--- res/res_config_pgsql.c	(revision 83295)
+++ res/res_config_pgsql.c	(working copy)
@@ -820,7 +820,7 @@
 		dbport = atoi(s);
 	}
 
-	if (dbhost && !(s = ast_variable_retrieve(config, "general", "dbsock"))) {
+	if (!ast_strlen_zero(dbhost) && !(s = ast_variable_retrieve(config, "general", "dbsock"))) {
 		ast_log(LOG_WARNING,
 				"Postgresql RealTime: No database socket found, using '/tmp/pgsql.sock' as default.\n");
 		strcpy(dbsock, "/tmp/pgsql.sock");
@@ -830,7 +830,7 @@
 	ast_config_destroy(config);
 
 	if (option_debug) {
-		if (dbhost) {
+		if (!ast_strlen_zero(dbhost)) {
 			ast_debug(1, "Postgresql RealTime Host: %s\n", dbhost);
 			ast_debug(1, "Postgresql RealTime Port: %i\n", dbport);
 		} else {
@@ -868,7 +868,7 @@
 		pgsqlConn = NULL;
 	}
 
-	if ((!pgsqlConn) && (dbhost || dbsock) && dbuser && dbpass && my_database) {
+	if ((!pgsqlConn) && (!ast_strlen_zero(dbhost) || !ast_strlen_zero(dbsock)) && !ast_strlen_zero(dbuser) && !ast_strlen_zero(dbpass) && !ast_strlen_zero(my_database)) {
 		char *connInfo = NULL;
 		unsigned int size = 100 + strlen(dbhost)
 			+ strlen(dbuser)
@@ -909,15 +909,15 @@
 	int ctime = time(NULL) - connect_time;
 
 	if (pgsqlConn && PQstatus(pgsqlConn) == CONNECTION_OK) {
-		if (dbhost) {
+		if (!ast_strlen_zero(dbhost)) {
 			snprintf(status, 255, "Connected to %s@%s, port %d", dbname, dbhost, dbport);
-		} else if (dbsock) {
+		} else if (!ast_strlen_zero(dbsock)) {
 			snprintf(status, 255, "Connected to %s on socket file %s", dbname, dbsock);
 		} else {
 			snprintf(status, 255, "Connected to %s@%s", dbname, dbhost);
 		}
 
-		if (dbuser && *dbuser) {
+		if (!ast_strlen_zero(dbuser)) {
 			snprintf(status2, 99, " with username %s", dbuser);
 		}
 
Index: utils/ael_main.c
===================================================================
--- utils/ael_main.c	(revision 83295)
+++ utils/ael_main.c	(working copy)
@@ -61,8 +61,8 @@
 	}
 }
 
-struct namelist *create_name(char *name);
-struct namelist *create_name(char *name)
+struct namelist *create_name(const char *name);
+struct namelist *create_name(const char *name)
 {
 	struct namelist *x = calloc(1, sizeof(*x));
 	if (!x)
@@ -333,12 +333,12 @@
 
 void pbx_builtin_setvar(void *chan, void *data)
 {
-	struct namelist *x = create_name((char*)data);
+	struct namelist *x = create_name(data);
 	if(!no_comp)
 		printf("Executed pbx_builtin_setvar(chan, data=%s);\n", (char*)data);
 
 	if( dump_extensions ) {
-		x = create_name((char*)data);
+		x = create_name(data);
 		ADD_LAST(globalvars,x);
 	}
 }
@@ -365,7 +365,7 @@
 		printf("Executed ast_context_add_ignorepat2(con, value=%s, registrar=%s);\n", value, registrar);
 	if( dump_extensions ) {
 		struct namelist *x;
-		x = create_name((char*)value);
+		x = create_name(value);
 		ADD_LAST(con->ignorepats,x);
 	}
 }
