Reading +IPD response from serial.read() using Arduino UNO and ESP8266

 delay(10);

Why? You can not hurry serial data along by stuffing your head in the sand.

c[100];

Well, that's interesting. Perhaps you should change that to

42;

That would be no less useless.

strcpy(a,syn.packet_type);
 strcat(a,syn.sensor_name);
 strcat(a,syn.payload);

So, a contains "syntemp100.7". How is the receiving end supposed to make sense of that?

//again here i am supposed to get the serponce from the server but i recieve a truncated response after the +IPD from here

You REALLY need to refactor your code. You have WAY too many places where you incorrectly read incoming serial data. You should have ONE function that reads incoming serial data. Call that ONE function as many times as you need to.

You REALLY need to properly indent your code. I'm tired of struggling to understand what your poorly laid out code is doing. And, with Tools + Auto Format so easy to use, there is no excuse for posting poorly indented code.