STDSOAP2C=
endif
-CC=gcc
-
GSOAP_FILES_PREFIX:= bk_ws_
YACC=bison -y
SUFFIXES = .T
DEBUG:=-g -O0 -Wall
-# not yet
-# -I${voms}/include \
-# -I${gacl}/include \
-# -I/usr/include/libxml2
GRIDSITE_CFLAGS = `xml2-config --cflags`
GRIDSITE_LIBS = -lgridsite_globus `xml2-config --libs`
-# -DNO_VOMS -DNO_GACL to be removed when voms/gridsite are available
-#CFLAGS:= -DNO_VOMS -DNO_GACL
-
CFLAGS:= \
${WS_CFLAGS} ${DEBUG} \
-DVERSION=\"${version}\" \
-lvomsc${vomsflavour} \
${GLOBUS_LIBS}
-GSOAP_LIBS:= -L${gsoap_prefix}/lib -lgsoap
-
SRVBONES_LIB:= -L${stagedir}/lib -lglite_lb_server_bones
+COMMON_LIBS:= -L${stagedir}/lib -lglite_lb_common_${nothrflavour} -lglite_security_gss_${nothrflavour}
-COMMON_LIB:= -L${stagedir}/lib -lglite_lb_common_${nothrflavour}
-
-LB_PROXY_COMMON_LIB:= -L${stagedir}/lib -lglite_lb_common_${nothrflavour}
-
-ifeq ($(GLITE_LB_SERVER_WITH_WS),yes)
- SERVER_SOAP_OBJS:=${GSOAP_FILES_PREFIX}C.o ${GSOAP_FILES_PREFIX}Server.o \
- ws_plugin.o ws_query.o ws_fault.o ws_typeref.o
- SERVER_WS_LIBS=${GSOAP_LIBS}
-else
- SERVER_SOAP_OBJS=
- SERVER_WS_LIBS=
-endif
-
-LB_PROXY_OBJS:= lbproxy.o il_lbproxy.o get_events.o index.o jobstat.o seqcode.o \
- jobstat_supp.o write2rgma.o lbs_db.o lb_html.o lb_http.o lb_proto.o \
- lb_xml_parse.o lb_xml_parse_V21.o \
- lock.o openserver.o query.o userjobs.o db_store.o request.o store.o \
- stored_master.o srv_purge.o server_state.o dump.o lb_authz.o load.o \
- notification.o il_notification.o notif_match.o
-
-SERVER_OBJS:= bkserverd.o il_lbproxy.o get_events.o index.o jobstat.o jobstat_supp.o \
+BKSERVER_BASE_OBJS:= \
+ bkserverd.o il_lbproxy.o get_events.o index.o jobstat.o jobstat_supp.o \
seqcode.o write2rgma.o lbs_db.o lb_html.o lb_http.o lb_proto.o lb_xml_parse.o \
lb_xml_parse_V21.o \
lock.o openserver.o query.o userjobs.o db_store.o request.o store.o \
stored_master.o srv_purge.o server_state.o dump.o lb_authz.o load.o \
notification.o il_notification.o notif_match.o stats.o
+ifeq ($(GLITE_LB_SERVER_WITH_WS),yes)
+ BKSERVER_OBJS:= \
+ ${BKSERVER_BASE_OBJS} \
+ ${GSOAP_FILES_PREFIX}C.o ${GSOAP_FILES_PREFIX}Server.o \
+ ws_query.o ws_fault.o ws_typeref.o
+
+ BKSERVER_LIBS= \
+ ${EXT_LIBS} \
+ ${SRVBONES_LIB} \
+ -lglite_lb_common_${nothrflavour} \
+ -L${gsoap_prefix}/lib -lgsoap \
+ -lglite_security_gsoap_plugin_${nothrflavour}
+else
+ BKSERVER_LIBS= \
+ ${EXT_LIBS} \
+ ${SRVBONES_LIB} \
+ -lglite_lb_common_${nothrflavour} \
+ -lglite_security_gss_${nothrflavour}
+endif
+
INDEX_OBJS:= index.o index_parse.o jobstat_supp.o lbs_db.o openserver.o \
jobstat.o query.o lock.o get_events.o write2rgma.o index_lex.o \
lb_authz.o store.o bkindex.o
-WS_CLIENT_OBJS:= stdsoap2_patched.o test_ws_plugin.o $(GSOAP_FILES_PREFIX)C.o $(GSOAP_FILES_PREFIX)Client.o ws_fault.o ws_typeref.o
-WS_CLIENT_LIBS:= -L${stagedir}/lib -lglite_lb_client_${nothrflavour}
+INDEX_LIBS:= ${EXT_LIBS} ${SRVBONES_LIB} ${COMMON_LIBS}
+
+WS_CLIENT_OBJS:= $(GSOAP_FILES_PREFIX)C.o $(GSOAP_FILES_PREFIX)Client.o ws_fault.o ws_typeref.o
+WS_CLIENT_LIBS:= -L${stagedir}/lib \
+ ${EXT_LIBS} \
+ -lglite_lb_client_${nothrflavour} \
+ -lglite_lb_common_${nothrflavour} \
+ -L${gsoap_prefix}/lib -lgsoap \
+ -lglite_security_gsoap_plugin_${nothrflavour}
-HDRS=index.h ws_plugin.h lb_authz.h lbs_db.h store.h
+HDRS=index.h lb_authz.h lbs_db.h store.h
-LIB_OBJS_PS:=test_ws_plugin.o ws_fault.o lb_authz.o lbs_db.o
+LIB_OBJS_PS:=ws_fault.o lb_authz.o lbs_db.o
L_LIB_OBJS_PS:=${LIB_OBJS_PS:.o=.lo}
LIB_OBJS_BK:=lb_authz.o lbs_db.o query.o jobstat.o lb_xml_parse.o \
il_notification.o notif_match.o il_lbproxy.o lock.o \
STATIC_LIB_BK:=libglite_lb_server_misc_bk_${nothrflavour}.a
LT_LIB_BK:=libglite_lb_server_misc_bk_${nothrflavour}.la
-glite_lb_proxy: ${LB_PROXY_OBJS}
- ${LINK} -o $@ ${LB_PROXY_OBJS} ${COMMON_LIB} ${SRVBONES_LIB} ${EXT_LIBS}
-
-glite_lb_bkserverd: ${SERVER_OBJS} ${SERVER_SOAP_OBJS}
- ${LINK} -o $@ ${SERVER_OBJS} ${SERVER_SOAP_OBJS} ${COMMON_LIB} ${SRVBONES_LIB} ${EXT_LIBS} ${SERVER_WS_LIBS}
+glite_lb_bkserverd: LoggingAndBookkeeping.nsmap ${BKSERVER_OBJS}
+ ${LINK} -o $@ ${BKSERVER_OBJS} ${BKSERVER_LIBS}
glite_lb_bkindex: ${INDEX_OBJS}
- ${LINK} -o $@ ${INDEX_OBJS} ${COMMON_LIB} ${EXT_LIBS}
+ ${LINK} -o $@ ${INDEX_OBJS} ${INDEX_LIBS}
default all: compile
-compile: glite_lb_bkserverd glite_lb_bkindex glite_lb_proxy ${LT_LIB_PS} ${LT_LIB_BK}
+compile: glite_lb_bkserverd glite_lb_bkindex ${LT_LIB_PS} ${LT_LIB_BK}
check: compile test.xml test.query
-echo check.query not complete yet
test_coverage:
-mkdir coverage
cd coverage && $(MAKE) -f ../Makefile top_srcdir=../../ COVERAGE_FLAGS="-fprofile-arcs -ftest-coverage" check
- cd coverage && for i in `echo ${INDEX_OBJS} ${SERVER_OBJS} | tr ' ' '\012' | sort -u`; do gcov $$i ; done
+ cd coverage && for i in `echo ${INDEX_OBJS} ${BKSERVER_OBJS} | tr ' ' '\012' | sort -u`; do gcov $$i ; done
lb_xml_parse.c: lb_xml_parse.c.T
rm -f $@
test_xml: test_xml.cpp
${CXX} -c ${CFLAGS} ${TEST_INC} $<
- ${LINKXX} -o $@ test_xml.o lb_xml_parse.o ${COMMON_LIB} ${TEST_LIBS} ${EXT_LIBS}
+ ${LINKXX} -o $@ test_xml.o lb_xml_parse.o ${COMMON_LIBS} ${TEST_LIBS} ${EXT_LIBS}
test.query: test_query_events
./test_query_events
-query_events_objs:=`echo ${SERVER_OBJS} | sed 's/lbs_db\.o//;s/bkserverd\.o//'`
+query_events_objs:=`echo ${BKSERVER_BASE_OBJS} | sed 's/lbs_db\.o//;s/bkserverd\.o//'`
test_query_events: test_query_events.o
${LINKXX} -o $@ test_query_events.o ${query_events_objs} \
- ${TEST_LIBS} ${COMMON_LIB} ${EXT_LIBS}
+ ${TEST_LIBS} ${COMMON_LIBS} ${EXT_LIBS}
test.soapconv: test_soap_conv
./test_soap_conv
test_soap_conv: test_soap_conv.cpp ${WS_CLIENT_OBJS}
${CXX} -c ${CFLAGS} ${TEST_INC} $<
- ${LINKXX} -o $@ test_soap_conv.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${COMMON_LIB} ${TEST_LIBS}
+ ${LINKXX} -o $@ test_soap_conv.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${TEST_LIBS}
examples: ws_getversion ws_jobstat ws_query_ex
ws_getversion: ws_getversion.o ${WS_CLIENT_OBJS}
- ${LINK} -o $@ ws_getversion.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${EXT_LIBS}
+ ${LINK} -o $@ ws_getversion.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS}
ws_jobstat: ws_jobstat.o ${WS_CLIENT_OBJS}
- ${LINK} -o $@ ws_jobstat.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${EXT_LIBS}
+ ${LINK} -o $@ ws_jobstat.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS}
ws_query_ex: ws_query_ex.o ${WS_CLIENT_OBJS}
- ${LINK} -o $@ ws_query_ex.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${EXT_LIBS}
+ ${LINK} -o $@ ws_query_ex.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS}
ws_query_ext: ws_query_ext.o ${WS_CLIENT_OBJS}
- ${LINK} -o $@ ws_query_ext.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${EXT_LIBS}
-
-stdsoap2_patched.o:
- ${CC} ${CFLAGS} -c -o $@ ${STDSOAP2C}
-
-test_ws_plugin.o: ws_plugin.c
- ${COMPILE} ${CFLAGS} -DPLUGIN_TEST -c -o $@ ${top_srcdir}/src/ws_plugin.c
+ ${LINK} -o $@ ws_query_ext.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS}
${LT_LIB_PS}: ${LIB_OBJS_PS}
${LINK} -o $@ ${L_LIB_OBJS_PS}
#include <getopt.h>
#include <stdsoap2.h>
+#include "glite/security/glite_gsplugin.h"
#include "glite/lb/consumer.h"
-#include "ws_plugin.h"
#include "bk_ws_H.h"
+#include "LoggingAndBookkeeping.nsmap"
+
static struct option opts[] = {
{"help", 0, NULL, 'h'},
{"server", 1, NULL, 'm'},
int main(int argc,char** argv)
{
edg_wll_Context ctx;
+ glite_gsplugin_Context gsplugin_ctx;
struct soap *mydlo = soap_new();
struct edgwll2__GetVersionResponse out;
int opt, err;
}
edg_wll_InitContext(&ctx);
-
- if ( soap_register_plugin_arg(mydlo, edg_wll_ws_plugin, (void *)ctx) )
+ glite_gsplugin_init_context(&gsplugin_ctx);
+
+ if ( soap_register_plugin_arg(mydlo, glite_gsplugin, (void *)gsplugin_ctx) )
{
soap_print_fault(mydlo, stderr);
return 1;
}
+ glite_gsplugin_set_udata(mydlo, gsplugin_ctx);
+
switch (err = soap_call_edgwll2__GetVersion(mydlo, server, "", &out))
{
case SOAP_OK: printf("Server version: %s\n", out.version); break;
#include <getopt.h>
#include <stdsoap2.h>
+#include "glite/security/glite_gsplugin.h"
#include "glite/lb/consumer.h"
-#include "ws_plugin.h"
#include "bk_ws_H.h"
+#include "LoggingAndBookkeeping.nsmap"
+
static struct option opts[] = {
{"help", 0, NULL, 'h'},
{"server", 1, NULL, 'm'},
int main(int argc,char** argv)
{
edg_wll_Context ctx;
+ glite_gsplugin_Context gsplugin_ctx;
struct soap *mydlo = soap_new();
struct edgwll2__JobStatusResponse out;
int opt, err;
}
edg_wll_InitContext(&ctx);
+ glite_gsplugin_init_context(&gsplugin_ctx);
- if ( soap_register_plugin_arg(mydlo, edg_wll_ws_plugin, (void *)ctx) )
+ if ( soap_register_plugin_arg(mydlo, glite_gsplugin, (void *)gsplugin_ctx) )
{
soap_print_fault(mydlo, stderr);
return 1;
}
+ glite_gsplugin_set_udata(mydlo, ctx);
+
+
switch (err = soap_call_edgwll2__JobStatus(mydlo, server, "", jobid,0,&out))
{
case SOAP_OK:
#include <getopt.h>
#include <stdsoap2.h>
+#include "glite/security/glite_gsplugin.h"
#include "glite/lb/consumer.h"
-#include "ws_plugin.h"
#include "bk_ws_H.h"
#include "ws_typeref.h"
+#include "LoggingAndBookkeeping.nsmap"
+
static struct option opts[] = {
{"help", 0, NULL, 'h'},
int main(int argc,char** argv)
{
edg_wll_Context ctx;
+ glite_gsplugin_Context gsplugin_ctx;
edg_wll_QueryRec **conditions = NULL;
struct soap *soap = soap_new();
struct edgwll__QueryConditions *jconds = NULL;
}
edg_wll_InitContext(&ctx);
+ glite_gsplugin_init_context(&gsplugin_ctx);
- if ( soap_register_plugin_arg(soap, edg_wll_ws_plugin, (void *)ctx) )
+ if ( soap_register_plugin_arg(soap, glite_gsplugin, (void *)gsplugin_ctx) )
{
soap_print_fault(soap, stderr);
return 1;
}
+ glite_gsplugin_set_udata(soap, ctx);
+
conditions = (edg_wll_QueryRec **)calloc(3,sizeof(edg_wll_QueryRec *));
conditions[0] = (edg_wll_QueryRec *)calloc(2,sizeof(edg_wll_QueryRec));
+++ /dev/null
-#ifndef __EDG_WORKLOAD_LOGGING_LBSERVER_WS_PLUGIN_H__
-#define __EDG_WORKLOAD_LOGGING_LBSERVER_WS_PLUGIN_H__
-
-#define PLUGIN_ID "GLITE_WS_PLUGIN"
-
-int edg_wll_ws_plugin(struct soap *, struct soap_plugin *, void *);
-
-#endif /* __EDG_WORKLOAD_LOGGING_LBSERVER_WS_PLUGIN_H__ */
#Wed Jan 12 04:18:30 CET 2005
-module.version=1.1.1
+module.version=1.2.0
module.build=146
module.age=1
#ifdef GLITE_LB_SERVER_WITH_WS
#include <stdsoap2.h>
+#include "glite/security/glite_gsplugin.h"
+
int soap_serve(struct soap*);
#endif /* GLITE_LB_SERVER_WITH_WS */
+#include "glite/security/glite_gss.h"
#include "glite/lb/srvbones.h"
#include "glite/lb/consumer.h"
#include "glite/lb/purge.h"
#include "glite/lb/context.h"
#include "glite/lb/mini_http.h"
#include "glite/lb/context-int.h"
-#include "glite/lb/lb_gss.h"
#include "lb_http.h"
#include "lb_proto.h"
#include "lbs_db.h"
#include "lb_authz.h"
#include "il_notification.h"
+#include "stats.h"
#ifdef GLITE_LB_SERVER_WITH_WS
-#include "ws_plugin.h"
-#endif /* GLITE_LB_SERVER_WITH_WS */
+#include "LoggingAndBookkeeping.nsmap"
+#endif /* GLITE_LB_SERVER_WITH_WS */
extern int edg_wll_StoreProto(edg_wll_Context ctx);
extern edg_wll_ErrorCode edg_wll_Open(edg_wll_Context ctx, char *cs);
int bk_handle_ws_connection(int conn, struct timeval client_start, void *data)
{
struct clnt_data_t *cdata = (struct clnt_data_t *) data;
- struct soap *soap;
- int rv;
+ struct soap *soap = NULL;
+ glite_gsplugin_Context gsplugin_ctx;
+ int rv = 0;
- if ( !(soap = soap_new()) )
- {
- fprintf(stderr, "Couldn't create soap environment");
+ if ( glite_gsplugin_init_context(&gsplugin_ctx) ) {
+ fprintf(stderr, "Couldn't create gSOAP plugin context");
return -1;
}
- if ( (rv = bk_handle_connection(conn, client_start, data)) )
- {
- soap_destroy(soap);
- return rv;
+ if ( !(soap = soap_new()) ) {
+ fprintf(stderr, "Couldn't create soap environment");
+ goto err;
}
+ soap_init2(soap, SOAP_IO_KEEPALIVE, SOAP_IO_KEEPALIVE);
+ if ( soap_set_namespaces(soap, namespaces) ) {
+ soap_done(soap);
+ perror("Couldn't set soap namespaces");
+ goto err;
+ }
+ if ( soap_register_plugin_arg(soap, glite_gsplugin, gsplugin_ctx) ) {
+ soap_done(soap);
+ perror("Couldn't set soap namespaces");
+ goto err;
+ }
+ if ( (rv = bk_handle_connection(conn, client_start, data)) ) {
+ soap_done(soap);
+ goto err;
+ }
+ gsplugin_ctx->connection = &cdata->ctx->connPool[cdata->ctx->connToUse].gss;
+ gsplugin_ctx->timeout = cdata->ctx->p_tmp_timeout;
+ gsplugin_ctx->cred = mycred;
cdata->soap = soap;
- soap_init(soap);
- soap_set_namespaces(soap, namespaces);
- soap_register_plugin_arg(soap, edg_wll_ws_plugin, cdata->ctx);
-
return 0;
+
+err:
+ if ( gsplugin_ctx ) glite_gsplugin_free_context(gsplugin_ctx);
+ if ( soap ) soap_destroy(soap);
+
+ return rv? : -1;
}
#endif /* GLITE_LB_SERVER_WITH_WS */
{
struct soap *soap = ((struct clnt_data_t *) cdata)->soap;
edg_wll_Context ctx = ((struct clnt_data_t *) cdata)->ctx;
+ glite_gsplugin_Context gsplugin_ctx;
- /* XXX: Is it neccessary?
- *
- * BEWARE: gSoap is trying to handle this connection -> closes the
- * socket after then query is served (or something like that :)
- *
- soap->socket = conn;
- */
if ( soap_serve(soap) )
{
char *errt, *errd;
edg_wll_gss_close(&ctx->connPool[ctx->connToUse].gss, NULL);
edg_wll_FreeContext(ctx);
ctx = NULL;
+ gsplugin_ctx = glite_gsplugin_get_context(soap);
+ gsplugin_ctx->cred = GSS_C_NO_CREDENTIAL;
+ gsplugin_ctx->connection = NULL;
+ glite_gsplugin_free_context(gsplugin_ctx);
free(errt); free(errd);
dprintf(("[%d] Connection closed\n", getpid()));
/*
#ifdef GLITE_LB_SERVER_WITH_WS
int bk_ws_clnt_disconnect(int conn, void *cdata)
{
- int rv;
+ struct soap *soap = ((struct clnt_data_t *) cdata)->soap;
+ glite_gsplugin_Context gsplugin_ctx;
+ int rv;
+ gsplugin_ctx = glite_gsplugin_get_context(soap);
+ gsplugin_ctx->cred = GSS_C_NO_CREDENTIAL;
+ gsplugin_ctx->connection = NULL;
if ( (rv = bk_clnt_disconnect(conn, cdata)) )
return rv;
soap_destroy(((struct clnt_data_t *)cdata)->soap);
+ glite_gsplugin_free_context(gsplugin_ctx);
return 0;
}
#include <errno.h>
#include <assert.h>
+#include "glite/security/glite_gss.h"
#include "glite/lb/il_msg.h"
-#include "glite/lb/lb_gss.h"
#include "glite/lb/lb_plain_io.h"
#include "glite/lb/context-int.h"
+++ /dev/null
-#include <stdio.h>
-#include <assert.h>
-#include <signal.h>
-#include <stdsoap2.h>
-
-#include "glite/lb/lb_gss.h"
-#include "glite/lb/context-int.h"
-
-#ifdef PLUGIN_TEST
-extern int edg_wll_open(edg_wll_Context);
-#endif
-
-#include "ws_plugin.h"
-
-#include "LoggingAndBookkeeping.nsmap"
-
-#ifdef WS_PLUGIN_DEBUG
-# define pdprintf(s) printf s
-#else
-# define pdprintf(s)
-#endif
-
-static const char plugin_id[] = PLUGIN_ID;
-
-#ifdef PLUGIN_TEST
-static int edg_wll_ws_connect(struct soap *, const char *, const char *, int);
-#endif
-static void edg_wll_ws_delete(struct soap *, struct soap_plugin *);
-static size_t edg_wll_ws_recv(struct soap *, char *, size_t);
-static int edg_wll_ws_send(struct soap *, const char *, size_t);
-
-
-int edg_wll_ws_plugin(struct soap *soap, struct soap_plugin *p, void *arg)
-{
- /* The parametr (edg_wll_Context) must be given! */
- assert(arg != NULL);
-
- p->id = plugin_id;
- p->data = arg;
- p->fdelete = edg_wll_ws_delete;
-
-#ifdef PLUGIN_TEST
- soap->fconnect = edg_wll_ws_connect;
-#endif
- soap->fsend = edg_wll_ws_send;
- soap->frecv = edg_wll_ws_recv;
-
- return SOAP_OK;
-}
-
-#ifdef PLUGIN_TEST
-int edg_wll_ws_connect(struct soap *soap, const char *endpoint,
- const char *host, int port)
-{
- edg_wll_Context ctx = (edg_wll_Context)soap_lookup_plugin(soap, plugin_id);
-
-
- ctx->srvName = strdup(host);
- ctx->srvPort = port;
- ctx->p_tmp_timeout = ctx->p_query_timeout;
- if ( edg_wll_open(ctx) )
- return edg_wll_Error(ctx, NULL, NULL);
-
- soap->socket = 2;
-
- return SOAP_OK;
-}
-#endif
-
-static void edg_wll_ws_delete(struct soap *soap, struct soap_plugin *p)
-{
- /*
- * Keep silly gSOAP happy
- */
-}
-
-
-size_t edg_wll_ws_recv(struct soap *soap, char *buf, size_t bufsz)
-{
- edg_wll_Context ctx = (edg_wll_Context)soap_lookup_plugin(soap, plugin_id);
- edg_wll_GssStatus gss_code;
- int len;
-
-
- edg_wll_ResetError(ctx);
- if ( ctx->connPool[ctx->connToUse].gss.context == GSS_C_NO_CONTEXT )
- {
- edg_wll_SetError(ctx, ENOTCONN, NULL);
- soap->errnum = ENOTCONN;
- return 0;
- }
-
- len = edg_wll_gss_read(&ctx->connPool[ctx->connToUse].gss,
- buf, bufsz, &ctx->p_tmp_timeout, &gss_code);
-
- switch ( len )
- {
- case EDG_WLL_GSS_OK:
- break;
-
- case EDG_WLL_GSS_ERROR_GSS:
- edg_wll_SetErrorGss(ctx, "receving WS request", &gss_code);
- soap->errnum = ENOTCONN;
- return 0;
-
- case EDG_WLL_GSS_ERROR_ERRNO:
- edg_wll_SetError(ctx, errno, "edg_wll_gss_read()");
- soap->errnum = errno;
- return 0;
-
- case EDG_WLL_GSS_ERROR_TIMEOUT:
- edg_wll_SetError(ctx, ETIMEDOUT, NULL);
- soap->errnum = ETIMEDOUT;
- return 0;
-
- case EDG_WLL_GSS_ERROR_EOF:
- edg_wll_SetError(ctx, ENOTCONN, NULL);
- soap->errnum = ENOTCONN;
- return 0;
-
- /* default: fallthrough */
- }
-
- pdprintf(("\nWS received:\n%s\n\n", buf));
- return len;
-}
-
-static int edg_wll_ws_send(struct soap *soap, const char *buf, size_t bufsz)
-{
- edg_wll_Context ctx = (edg_wll_Context) soap_lookup_plugin(soap, plugin_id);
- edg_wll_GssStatus gss_code;
- struct sigaction sa, osa;
- size_t total = 0;
- int ret;
-
-
- edg_wll_ResetError(ctx);
-
- if ( ctx->connPool[ctx->connToUse].gss.context == GSS_C_NO_CONTEXT )
- {
- edg_wll_SetError(ctx, ENOTCONN, NULL);
- soap->errnum = ENOTCONN;
- return SOAP_EOF;
- }
-
- memset(&sa, 0, sizeof(sa));
- assert(sa.sa_handler == NULL);
- sa.sa_handler = SIG_IGN;
- sigaction(SIGPIPE, &sa, &osa);
-
- ret = edg_wll_gss_write_full(&ctx->connPool[ctx->connToUse].gss,
- (void*)buf, bufsz,
- &ctx->p_tmp_timeout,
- &total, &gss_code);
-
- sigaction(SIGPIPE, &osa, NULL);
-
- switch ( ret )
- {
- case EDG_WLL_GSS_OK:
- pdprintf(("\nWS sent:\n%s\n\n", buf));
- break;
-
- case EDG_WLL_GSS_ERROR_TIMEOUT:
- edg_wll_SetError(ctx, ETIMEDOUT, "edg_wll_ws_send()");
- soap->errnum = ETIMEDOUT;
- return SOAP_EOF;
-
- case EDG_WLL_GSS_ERROR_ERRNO:
- if ( errno == EPIPE )
- {
- edg_wll_SetError(ctx, ENOTCONN, "edg_wll_ws_send()");
- soap->errnum = ENOTCONN;
- }
- else
- {
- edg_wll_SetError(ctx, errno, "edg_wll_ws_send()");
- soap->errnum = errno;
- }
- return SOAP_EOF;
-
- case EDG_WLL_GSS_ERROR_GSS:
- case EDG_WLL_GSS_ERROR_EOF:
- default:
- edg_wll_SetError(ctx, ENOTCONN, "edg_wll_ws_send()");
- soap->errnum = ENOTCONN;
- return SOAP_EOF;
- }
-
- return SOAP_OK;
-}
#include <stdsoap2.h>
+#include "glite/security/glite_gsplugin.h"
+
#include "glite/lb/context-int.h"
#include "glite/lb/consumer.h"
#include "jobstat.h"
#include "query.h"
-#include "ws_plugin.h"
#include "bk_ws_H.h"
#include "get_events.h"
#include "ws_fault.h"
struct edgwll__JobStatFlags *flags,
struct edgwll2__JobStatusResponse *out)
{
- edg_wll_Context ctx = (edg_wll_Context) soap_lookup_plugin(soap, PLUGIN_ID);
+ edg_wll_Context ctx = (edg_wll_Context) glite_gsplugin_get_udata(soap);
edg_wlc_JobId j;
edg_wll_JobStat s;
struct edgwll__JobStatFlags *flags,
struct edgwll2__QueryJobsResponse *out)
{
- edg_wll_Context ctx = (edg_wll_Context) soap_lookup_plugin(soap, PLUGIN_ID);
+ edg_wll_Context ctx = (edg_wll_Context) glite_gsplugin_get_udata(soap);
edg_wlc_JobId *jobsOut = NULL;
edg_wll_JobStat *statesOut = NULL;
edg_wll_QueryRec **qr = NULL;