| 748 if (!(h = gg_recv_packet(sess))) { |
748 if (!(h = gg_recv_packet(sess))) { |
| 749 gg_debug(GG_DEBUG_MISC, "-- gg_recv_packet failed. errno = %d (%d)\n", errno, strerror(errno)); |
749 gg_debug(GG_DEBUG_MISC, "-- gg_recv_packet failed. errno = %d (%d)\n", errno, strerror(errno)); |
| 750 return -1; |
750 return -1; |
| 751 } |
751 } |
| 752 |
752 |
| 753 p = h + sizeof(struct gg_header); |
753 p = (void *)h + sizeof(struct gg_header); |
| 754 |
754 |
| 755 if (h->type == GG_RECV_MSG) { |
755 if (h->type == GG_RECV_MSG) { |
| 756 struct gg_recv_msg *r = p; |
756 struct gg_recv_msg *r = p; |
| 757 |
757 |
| 758 gg_debug(GG_DEBUG_MISC, "-- received a message\n"); |
758 gg_debug(GG_DEBUG_MISC, "-- received a message\n"); |
| 1129 e->event.failure = GG_FAILURE_INVALID; |
1129 e->event.failure = GG_FAILURE_INVALID; |
| 1130 sess->state = GG_STATE_IDLE; |
1130 sess->state = GG_STATE_IDLE; |
| 1131 break; |
1131 break; |
| 1132 } |
1132 } |
| 1133 |
1133 |
| 1134 w = (struct gg_welcome *)(h + sizeof(struct gg_header)); |
1134 w = (struct gg_welcome *)((void *)h + sizeof(struct gg_header)); |
| 1135 w->key = fix32(w->key); |
1135 w->key = fix32(w->key); |
| 1136 |
1136 |
| 1137 for (hash = 1; *password; password++) |
1137 for (hash = 1; *password; password++) |
| 1138 hash *= (*password) + 1; |
1138 hash *= (*password) + 1; |
| 1139 hash *= w->key; |
1139 hash *= w->key; |