| 149 * \ingroup pubdir50 |
149 * \ingroup pubdir50 |
| 150 */ |
150 */ |
| 151 int gg_pubdir50_seq_set(gg_pubdir50_t req, uint32_t seq) |
151 int gg_pubdir50_seq_set(gg_pubdir50_t req, uint32_t seq) |
| 152 { |
152 { |
| 153 gg_debug(GG_DEBUG_FUNCTION, "** gg_pubdir50_seq_set(%p, %d);\n", req, seq); |
153 gg_debug(GG_DEBUG_FUNCTION, "** gg_pubdir50_seq_set(%p, %d);\n", req, seq); |
| 154 |
154 |
| 155 if (!req) { |
155 if (!req) { |
| 156 gg_debug(GG_DEBUG_MISC, "// gg_pubdir50_seq_set() invalid arguments\n"); |
156 gg_debug(GG_DEBUG_MISC, "// gg_pubdir50_seq_set() invalid arguments\n"); |
| 157 errno = EFAULT; |
157 errno = EFAULT; |
| 158 return -1; |
158 return -1; |
| 159 } |
159 } |
| 202 uint32_t res; |
202 uint32_t res; |
| 203 char *buf, *p; |
203 char *buf, *p; |
| 204 struct gg_pubdir50_request *r; |
204 struct gg_pubdir50_request *r; |
| 205 |
205 |
| 206 gg_debug_session(sess, GG_DEBUG_FUNCTION, "** gg_pubdir50(%p, %p);\n", sess, req); |
206 gg_debug_session(sess, GG_DEBUG_FUNCTION, "** gg_pubdir50(%p, %p);\n", sess, req); |
| 207 |
207 |
| 208 if (!sess || !req) { |
208 if (!sess || !req) { |
| 209 gg_debug_session(sess, GG_DEBUG_MISC, "// gg_pubdir50() invalid arguments\n"); |
209 gg_debug_session(sess, GG_DEBUG_MISC, "// gg_pubdir50() invalid arguments\n"); |
| 210 errno = EFAULT; |
210 errno = EFAULT; |
| 211 return 0; |
211 return 0; |
| 212 } |
212 } |
| 219 |
219 |
| 220 for (i = 0; i < req->entries_count; i++) { |
220 for (i = 0; i < req->entries_count; i++) { |
| 221 /* wyszukiwanie bierze tylko pierwszy wpis */ |
221 /* wyszukiwanie bierze tylko pierwszy wpis */ |
| 222 if (req->entries[i].num) |
222 if (req->entries[i].num) |
| 223 continue; |
223 continue; |
| 224 |
224 |
| 225 if (sess->encoding == GG_ENCODING_CP1250) { |
225 if (sess->encoding == GG_ENCODING_CP1250) { |
| 226 size += strlen(req->entries[i].field) + 1; |
226 size += strlen(req->entries[i].field) + 1; |
| 227 size += strlen(req->entries[i].value) + 1; |
227 size += strlen(req->entries[i].value) + 1; |
| 228 } else { |
228 } else { |
| 229 char *tmp; |
229 char *tmp; |
| 327 { |
327 { |
| 328 const char *end = packet + length, *p; |
328 const char *end = packet + length, *p; |
| 329 const struct gg_pubdir50_reply *r = (const struct gg_pubdir50_reply*) packet; |
329 const struct gg_pubdir50_reply *r = (const struct gg_pubdir50_reply*) packet; |
| 330 gg_pubdir50_t res; |
330 gg_pubdir50_t res; |
| 331 int num = 0; |
331 int num = 0; |
| 332 |
332 |
| 333 gg_debug(GG_DEBUG_FUNCTION, "** gg_pubdir50_handle_reply_sess(%p, %p, %p, %d);\n", sess, e, packet, length); |
333 gg_debug(GG_DEBUG_FUNCTION, "** gg_pubdir50_handle_reply_sess(%p, %p, %p, %d);\n", sess, e, packet, length); |
| 334 |
334 |
| 335 if (!sess || !e || !packet) { |
335 if (!sess || !e || !packet) { |
| 336 gg_debug(GG_DEBUG_MISC, "// gg_pubdir50_handle_reply() invalid arguments\n"); |
336 gg_debug(GG_DEBUG_MISC, "// gg_pubdir50_handle_reply() invalid arguments\n"); |
| 337 errno = EFAULT; |
337 errno = EFAULT; |
| 399 * wartości i możemy wychodzić |
399 * wartości i możemy wychodzić |
| 400 * grzecznie z pętli */ |
400 * grzecznie z pętli */ |
| 401 break; |
401 break; |
| 402 } |
402 } |
| 403 } |
403 } |
| 404 |
404 |
| 405 /* sprawdźmy, czy pole nie wychodzi poza pakiet, żeby nie |
405 /* sprawdźmy, czy pole nie wychodzi poza pakiet, żeby nie |
| 406 * mieć segfaultów, jeśli serwer przestanie zakańczać pakietów |
406 * mieć segfaultów, jeśli serwer przestanie zakańczać pakietów |
| 407 * przez \0 */ |
407 * przez \0 */ |
| 408 |
408 |
| 409 if (p == end) { |
409 if (p == end) { |