diff --git a/channels/h323/chan_h323.c b/channels/h323/chan_h323.c
index 017a164361286e8c0e393a74a3ea93ee1a09ae9f..7f8ee2be47875e1563393bf9e088adcbbaee5b19 100755
--- a/channels/h323/chan_h323.c
+++ b/channels/h323/chan_h323.c
@@ -406,7 +406,13 @@ static int oh323_call(struct ast_channel *c, char *dest, int timeout)
 
 	/* Copy callerid, if there is any */
 	if (strlen(c->callerid)) {
-		p->calloptions.callerid = strdup(c->callerid);
+		char *tmp = strchr(c->callerid, '"');
+		if (!tmp) {
+			p->calloptions.callerid = malloc(sizeof(c->callerid+20)); // evil
+			sprintf(p->calloptions.callerid, "\"Unknown Name\" <%s>", c->callerid);
+		} else {
+			p->calloptions.callerid = strdup(c->callerid);
+		}
 	}
 
 	res = h323_make_call(called_addr, &(p->cd), p->calloptions);