projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Relax http/https URL check a bit
[yaz-moved-to-github.git]
/
src
/
zoom-c.c
diff --git
a/src/zoom-c.c
b/src/zoom-c.c
index
0c6f48e
..
c28eca7
100644
(file)
--- a/
src/zoom-c.c
+++ b/
src/zoom-c.c
@@
-2,7
+2,7
@@
* Copyright (c) 2000-2004, Index Data
* See the file LICENSE for details.
*
* Copyright (c) 2000-2004, Index Data
* See the file LICENSE for details.
*
- * $Id: zoom-c.c,v 1.25 2004-02-23 09:26:11 adam Exp $
+ * $Id: zoom-c.c,v 1.27 2004-04-28 22:44:59 adam Exp $
*
* ZOOM layer for C, connections, result sets, queries.
*/
*
* ZOOM layer for C, connections, result sets, queries.
*/
@@
-185,7
+185,6
@@
void ZOOM_connection_remove_task (ZOOM_connection c)
switch (task->which)
{
case ZOOM_TASK_SEARCH:
switch (task->which)
{
case ZOOM_TASK_SEARCH:
-
ZOOM_resultset_destroy (task->u.search.resultset);
break;
case ZOOM_TASK_RETRIEVE:
ZOOM_resultset_destroy (task->u.search.resultset);
break;
case ZOOM_TASK_RETRIEVE:
@@
-783,6
+782,19
@@
ZOOM_resultset_records (ZOOM_resultset r, ZOOM_record *recs,
}
}
}
}
+static void get_cert(ZOOM_connection c)
+{
+ char *cert_buf;
+ int cert_len;
+
+ if (cs_get_peer_certificate_x509(c->cs, &cert_buf, &cert_len))
+ {
+ ZOOM_connection_option_setl(c, "sslPeerCert",
+ cert_buf, cert_len);
+ xfree(cert_buf);
+ }
+}
+
static zoom_ret do_connect (ZOOM_connection c)
{
void *add;
static zoom_ret do_connect (ZOOM_connection c)
{
void *add;
@@
-822,6
+834,7
@@
static zoom_ret do_connect (ZOOM_connection c)
{
ZOOM_Event event = ZOOM_Event_create(ZOOM_EVENT_CONNECT);
ZOOM_connection_put_event(c, event);
{
ZOOM_Event event = ZOOM_Event_create(ZOOM_EVENT_CONNECT);
ZOOM_connection_put_event(c, event);
+ get_cert(c);
if (c->proto == PROTO_Z3950)
ZOOM_connection_send_init(c);
else
if (c->proto == PROTO_Z3950)
ZOOM_connection_send_init(c);
else
@@
-987,7
+1000,7
@@
static zoom_ret ZOOM_connection_send_init (ZOOM_connection c)
ZOOM_options_get(c->options, "implementationName"),
odr_prepend(c->odr_out, "ZOOM-C", ireq->implementationName));
ZOOM_options_get(c->options, "implementationName"),
odr_prepend(c->odr_out, "ZOOM-C", ireq->implementationName));
- version = odr_strdup(c->odr_out, "$Revision: 1.25 $");
+ version = odr_strdup(c->odr_out, "$Revision: 1.27 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion = odr_prepend(c->odr_out,
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion = odr_prepend(c->odr_out,
@@
-1589,21
+1602,23
@@
ZOOM_record_get (ZOOM_record rec, const char *type_spec, int *len)
i++;
if (!strncmp(type_spec+i, "charset=", 8))
{
i++;
if (!strncmp(type_spec+i, "charset=", 8))
{
- cp = type_spec+i+8;
- for (i = 0; cp[i] && i < sizeof(charset)-1; i++)
+ int j = 0;
+ i = i + 8; /* skip charset= */
+ for (j = 0; type_spec[i] && j < sizeof(charset)-1; i++, j++)
{
{
- if (cp[i] == ';' || cp[i] == ' ')
+ if (type_spec[i] == ';' || type_spec[i] == ' ')
break;
break;
- charset[i] = cp[i];
+ charset[j] = cp[i];
}
}
- charset[i] = '\0';
+ charset[j] = '\0';
}
else if (!strncmp(type_spec+i, "xpath=", 6))
{
}
else if (!strncmp(type_spec+i, "xpath=", 6))
{
- cp = type_spec+i+6;
- for (i = 0; cp[i] && i < sizeof(xpath)-1; i++)
- xpath[i] = cp[i];
- xpath[i] = '\0';
+ int j = 0;
+ i = i + 6;
+ for (j = 0; type_spec[i] && j < sizeof(xpath)-1; i++, j++)
+ xpath[j] = cp[i];
+ xpath[j] = '\0';
}
while (type_spec[i] == ' ')
i++;
}
while (type_spec[i] == ' ')
i++;
@@
-3225,11
+3240,18
@@
ZOOM_connection_option_get (ZOOM_connection c, const char *key)
ZOOM_API(void)
ZOOM_connection_option_set (ZOOM_connection c, const char *key,
ZOOM_API(void)
ZOOM_connection_option_set (ZOOM_connection c, const char *key,
- const char *val)
+ const char *val)
{
ZOOM_options_set (c->options, key, val);
}
{
ZOOM_options_set (c->options, key, val);
}
+ZOOM_API(void)
+ZOOM_connection_option_setl (ZOOM_connection c, const char *key,
+ const char *val, int len)
+{
+ ZOOM_options_setl (c->options, key, val, len);
+}
+
ZOOM_API(const char *)
ZOOM_resultset_option_get (ZOOM_resultset r, const char *key)
{
ZOOM_API(const char *)
ZOOM_resultset_option_get (ZOOM_resultset r, const char *key)
{
@@
-3365,6
+3387,7
@@
static int ZOOM_connection_do_io(ZOOM_connection c, int mask)
else if (ret == 0)
{
ZOOM_connection_put_event (c, event);
else if (ret == 0)
{
ZOOM_connection_put_event (c, event);
+ get_cert(c);
if (c->proto == PROTO_Z3950)
ZOOM_connection_send_init(c);
else
if (c->proto == PROTO_Z3950)
ZOOM_connection_send_init(c);
else